## multissh 一个简单的并行 SSH 工具,可以批量的对主机通过 SSH 执行命令组合。 #### 编译 ``` go get ./... go build ``` #### release 可以直接下载编译好的 release 版本 提供 win64 和 linux64 两个平台的可执行文件 https://github.com/shanghai-edu/multissh/releases/ #### 命令体系 ``` ./multissh -h -cmd string cmds // 需要执行的命令组合,多条命令以 ; 分割 -cmdfile string cmdfile path //需要执行的命令组合文件,文件内命令按行分割 -hostfile string hostfile path // 需要执行的主机列表文件,主机列表在文件内按行分割 -hosts string host address list //需要执行的主机列表,多个主机以 ; 分割 -ipfile string hostfile path //需要执行的主机(IP)列表文件,IP可以以地址段的方式逐行写在文本内 -p string password // 主机的 SSH 密码 -port int ssh port (default 22) //主机的 SSH 端口,默认 22 -u string username //主机的 SSH 用户名 -j string jsonFile //保存大量主机,包括主机地址,SSH用户名,SSH密码,SSH端口,所需执行的cmd指令文件地址 -outTxt bool outTxt (default false) //是否允许把结果保存到文件中,文件名为 ssh 连接的主机名(host 或 ip),true为允许 false为默认值 -t int timeLimit (default 30) //单个 ssh 会话的最大时间,超过时间命令未执行完则超时 默认为30s -n int numLimit (default 20) //最大并发访问量 默认为20 -v show version ``` **cmdfile 示例** ``` show clock ``` **hostfile 示例** ``` 192.168.15.101 192.168.15.102 ``` **ipfile 示例** ``` 192.168.15.101-192.168.15.102 ``` **ssh.json 示例** ``` { "SshHosts": [ { "Host": "192.168.15.101", "Port": 22, "Username": "admin", "Password": "admin", "CmdFile": "cmd1.txt.example" }, { "Host": "192.168.83.40", "Port": 22, "Username": "root", "Password": "root", "CmdFile": "cmd2.txt.example" } ] } ``` ## 用法 #### cmd string & host string ``` ./multissh -cmd "show clock" -hosts "192.168.15.101;192.168.15.102" -u admin -p admin 192.168.15.101 ssh start sw-1#show clock 05:26:40.649 UTC Tue Jun 6 2017 sw-1#exit 192.168.15.101 ssh end 192.168.15.102 ssh start sw-2#show clock 05:24:38.708 UTC Tue Jun 6 2017 sw-2#exit 192.168.15.102 ssh end ``` #### cmdfile & hostfile ``` ./multissh -cmdfile cmd.txt -hostfile host.txt -u admin -p admin 192.168.15.101 ssh start sw-1#show clock 05:29:43.269 UTC Tue Jun 6 2017 sw-1#exit 192.168.15.101 ssh end 192.168.15.102 ssh start sw-2#show clock 05:27:41.332 UTC Tue Jun 6 2017 sw-2#exit 192.168.15.102 ssh end ``` #### ipfile ``` ./multissh -cmdfile cmd.txt -ipfile ip.txt -u admin -p admin 192.168.15.101 ssh start sw-1#show clock 05:29:43.269 UTC Tue Jun 6 2017 sw-1#exit 192.168.15.101 ssh end 192.168.15.102 ssh start sw-2#show clock 05:27:41.332 UTC Tue Jun 6 2017 sw-2#exit 192.168.15.102 ssh end ``` #### ssh.json ``` ./multissh -j ssh.json -t 30 -n 20 -outTxt 192.168.15.101 ssh start sw-1#show clock 05:29:43.269 UTC Tue Jun 6 2017 sw-1#exit 192.168.15.101 ssh end 192.168.83.40 ssh start 2017年 06月 09日 星期五 09:33:11 CST 2017年 06月 09日 星期五 09:33:14 CST 192.168.83.40 ssh end ``` #### TODO 增加使用证书认证的支持 #### LICENSE Apache License 2.0