想请教下大神们怎么用go写命令行工具,用于远程管理主机的,类似于saltstack这样的工具; 看了些文章可以做到服务监听,连接都没问题,怎么交互式地执行命令到远程主机呢,求思路。。。多谢各位。
有疑问加站长微信联系(非本文作者)

想请教下大神们怎么用go写命令行工具,用于远程管理主机的,类似于saltstack这样的工具; 看了些文章可以做到服务监听,连接都没问题,怎么交互式地执行命令到远程主机呢,求思路。。。多谢各位。
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
`单行代码`
读取输入的命令,然后发送到远程?
是的; 保持连接; 随时转入命令发送到远程主机执行;
首先你得 先学一下 怎么捕获 命令行参数。
1.捕获标准输入 2.解析输入的参数 3.发送消息 4. 解析消息 5.执行消息处理 6.执行相应的动作
很简单啊! 交互式 可以用os.Stdin获取输入参数 通过tcp连接 或者消息队列等方式发送给客户端 客户端解析执行就可以
jvms phoneix 我写的小工具, 都是支持命令行的
你说的是os.Args吧。
好的,参考下,tks
有没有类似的案例可参考的
有没有类似的案例可参考的
首先架构是c/s ,可以类比saltstack。 功能 server端 支持命令行参数、支持http接口、发送指令给client、接收client状态、连接zk或者etcd探活client。扩展:server支持与gitlab交互、支持灰度等 client端 支持shell命令执行、支持自定义插件执行、连接zk或etcd探活server。扩展 client 支持命令行、client返回状态重定向到数据库等 server和client可以通过thrift通信 仅供参考
有个ConsoleUI的库 term-box和他一系列的 。。可以看看
看过go语言圣经没,其中有一个聊天室的思路你可以借鉴一下,做一个server,用map保存每个client的连接,然后通过捕获命令行输入,像每一个map中的client发出网络请求即可;当终止输入或者你定义一个终止符号,用chan来捕获这个,终止之后,再与client连接进行终止,发送一个终止消息。你可以在这上面加以改进
这个不是go的事情,这个应该是ssh的事情
os/exec包
这位兄弟写的几个案例代码就是为你准备的,tcp通讯、加密、os/exec执行系统命令 https://www.oschina.net/code/snippet_197499_23815