怎么用go写命令行工具--请教思路

007shaoye · 2017-08-09 09:03:01 · 6341 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2017-08-09 09:03:01 的主题,其中的信息可能已经有所发展或是发生改变。

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


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

6341 次点击  
加入收藏 微博
16 回复  |  直到 2017-09-02 09:53:11
channel
channel · #1 · 8年之前

读取输入的命令,然后发送到远程?

007shaoye
007shaoye · #2 · 8年之前
channelchannel #1 回复

读取输入的命令,然后发送到远程?

是的; 保持连接; 随时转入命令发送到远程主机执行;

xiaochuan
xiaochuan · #3 · 8年之前

首先你得 先学一下 怎么捕获 命令行参数。

sheepbao
sheepbao · #4 · 8年之前

1.捕获标准输入 2.解析输入的参数 3.发送消息 4. 解析消息 5.执行消息处理 6.执行相应的动作

Byan
Byan · #5 · 8年之前

很简单啊! 交互式 可以用os.Stdin获取输入参数 通过tcp连接 或者消息队列等方式发送给客户端 客户端解析执行就可以

ystyle
ystyle · #6 · 8年之前

jvms phoneix 我写的小工具, 都是支持命令行的

007shaoye
007shaoye · #7 · 8年之前
xiaochuanxiaochuan #3 回复

首先你得 先学一下 怎么捕获 命令行参数。

你说的是os.Args吧。

007shaoye
007shaoye · #8 · 8年之前
ystyleystyle #6 回复

[jvms](https://github.com/ystyle/jvms) [phoneix](https://github.com/ystyle/phoneix) 我写的小工具, 都是支持命令行的

好的,参考下,tks

007shaoye
007shaoye · #9 · 8年之前
ByanByan #5 回复

很简单啊! 交互式 可以用os.Stdin获取输入参数 通过tcp连接 或者消息队列等方式发送给客户端 客户端解析执行就可以

有没有类似的案例可参考的

007shaoye
007shaoye · #10 · 8年之前
ByanByan #5 回复

很简单啊! 交互式 可以用os.Stdin获取输入参数 通过tcp连接 或者消息队列等方式发送给客户端 客户端解析执行就可以

有没有类似的案例可参考的

Byan
Byan · #11 · 8年之前

首先架构是c/s ,可以类比saltstack。 功能 server端 支持命令行参数、支持http接口、发送指令给client、接收client状态、连接zk或者etcd探活client。扩展:server支持与gitlab交互、支持灰度等 client端 支持shell命令执行、支持自定义插件执行、连接zk或etcd探活server。扩展 client 支持命令行、client返回状态重定向到数据库等 server和client可以通过thrift通信 仅供参考

LuYuChengProject
LuYuChengProject · #12 · 8年之前

有个ConsoleUI的库 term-box和他一系列的 。。可以看看

sevenhe
sevenhe · #13 · 8年之前

看过go语言圣经没,其中有一个聊天室的思路你可以借鉴一下,做一个server,用map保存每个client的连接,然后通过捕获命令行输入,像每一个map中的client发出网络请求即可;当终止输入或者你定义一个终止符号,用chan来捕获这个,终止之后,再与client连接进行终止,发送一个终止消息。你可以在这上面加以改进

iamybj
iamybj · #14 · 8年之前

这个不是go的事情,这个应该是ssh的事情

ximen
ximen · #15 · 8年之前

os/exec包

ximen
ximen · #16 · 8年之前
ximenximen #15 回复

os/exec包

这位兄弟写的几个案例代码就是为你准备的,tcp通讯、加密、os/exec执行系统命令 https://www.oschina.net/code/snippet_197499_23815

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传