multissh
Find a file
2017-06-09 10:01:38 +08:00
.gitignore first commit 2017-06-07 15:48:34 +08:00
cfg.go 完成读取json文件、结果导出为txt文件、超时处理(时限参数可输入) 控制并发访问 2017-06-08 10:06:13 +08:00
cmd1.txt.example version 0.1 release 2017-06-09 10:00:03 +08:00
cmd2.txt.example version 0.1 release 2017-06-09 10:00:03 +08:00
host.txt.example version 0.1 release 2017-06-09 10:00:03 +08:00
ip.txt.example version 0.1 release 2017-06-09 10:00:03 +08:00
LICENSE version 0.1 release 2017-06-09 10:00:03 +08:00
main.go version 0.1 release 2017-06-09 10:00:03 +08:00
README.MD readme 2017-06-09 10:01:38 +08:00
ssh.json.example version 0.1 release 2017-06-09 10:00:03 +08:00
ssh_test.go first commit 2017-06-07 15:48:34 +08:00
sshconnect.go 修改已知bug 完善readme文件 2017-06-08 16:52:37 +08:00

multissh

一个简单的并行 SSH 工具,可以批量的对主机通过 SSH 执行命令组合。

编译

go get ./...
go build

命令体系

./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

cmdfile 示例

show clock
exit

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;exit" -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


#### LICENSE
Apache License 2.0