multissh/README.MD
2018-01-04 15:06:32 +08:00

162 lines
No EOL
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 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
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
```
#### TODO
增加使用证书认证的支持
#### LICENSE
Apache License 2.0