gojira.net
项目地址:https://github.com/xuewuhen/mssh
mssh is a tool for batching execute ssh commands.
1、介绍
2、对比传统ssh命令
对比传统的ssh命令优势:
1)、 go语言编写,使用最新的go语言ssh包(go1.3版ssh包)
2)、 支持多线程
3)、 原生ssh协议支持,支持密码、证书认证
4)、 支持超时(各种密码错误,内存爆,网络不通,登录异常不能登录情况,不会中断批量执行)
5)、 支持发送电子邮件告知执行结果
6)、 采用ssh做认证,更安全
7)、 内存占用少
8)、 支持不同机器同时执行不同命令或者同台机器同时执行不同命令
9)、 执行速度非常快
10)、 可以自定义超时时间
11)、 支持配置文件和命令行选项
3、mssh用法
3.1
./mssh -h 或者 ./mssh --help 或者 ./mssh help 查看命令帮助信息
mssh is a tool for batching ssh execute commands.
Usage:
mssh [command] [options] [arguments]
The commands are: mssh version
mssh help
The options are: -f input file(include
ip|username|password|cmd)
-cmd shell cmds or shell
scripts
-cfg mssh config file
default for mssh.conf
-s
shell mode switch default for false
-n the
number of goroutines default for 100
-rand random password
mode
-m
send mail switch default for false
-v
show details
The arguments are:
The arguments of mssh will be passed to
option cmd, will be part of cmd.
etc:
mssh -f file1 -cmd ls /etc /home /root
--> ok
mssh -f file1 -cmd ls -al /etc /home -->
bad (-al will be dealed with mssh's option, result in undefined
option)
mssh -f file1 -cmd "ls -al" /etc /tmp /home
--> ok
mssh -f file1 -cmd tmp.sh -s -m
--> ok (exec shell scripts)
....
more info wait for you to explore!
3.2
./mssh version 查看版本信息
mssh version 0.1.3
3.3
程序所有选项如下:
-f input file(include
ip|username|password|cmd)
-cmd
shell cmds or shell scripts
cdf
-cfg mssh config file
default for mssh.conf
-s shell mode switch
default for false
-n the number of
goroutines default for 100
-rand random password
mode
-m send mail switch
default for false
-v show details
解析顺序:
命令行选项 > 配置文件
3.3.1
./mssh -f file
-f file 指定ip列表文件,每个一行,此选项必须指定,否则程序会退出。
其他选项若不指定,将会使用默认选项。
3.3.2
./mssh -f file -cmd commands
-cmd 指定需要在远程机器上面执行的命令,如date等,如果不指定该选项默认使用配置文件里面的命令(echo
ok)
3.3.3
./mssh -f file -cfg conf
-cfg conf 指定mssh的配置文件,默认使用当前目录下的mssh.conf作为配置文件
此选项适合在多个配置文件之间切换的情况。
3.3.4
./mssh -f file -s -cmd tmp.sh
-s 开启shell mode,可以远程执行shell scripts,此选项需要与-cmd
xxx.sh配合使用
一般情况下不推荐使用,因为会影响执行速度
3.3.5
./mssh -f file -n 100
-n num 指定mssh的开启的线程数量,默认是100,最小为1,最大为10000。
3.3.6
./mssh -f file -rand
-rand 随机密码模式,需要与file里面的特定字段配合使用。
一般情况不会用到。
3.3.7
./mssh -f file -m -cmd commands
-m
开启发送邮件模式,如果配置文件mssh.conf里面指定了maillist=xxx,那么执行命令失败的主机ip或域名会发送给
相应的maillist。如果没有指定maillist,那么将会发送给当前登录中控的用户(如登录用户是xxx,那么邮件将会发送给xxx@xxx)。
3.3.8
./mssh -f file -v
-v 开启调试模式,将会显示详细的debug信息。
在某些情况下,对于调试命令执行失败非常有效。
3.3.9
关于配置文件说明
配置文件格式如下:
;main config section
[main]
username=root
password=rootpass
command=echo ok
;ssh timeout default 30s
timeout=30
;crypto config section
[crypto]
;mail config section
[mail]
title=mssh
body=mssh exec task
mode=text
;multiple users divided by comma
maillist=xxx,xxx
fr_addr=xxx@xxx
...
[main] //主配置部分
username=root //指定以什么用户到目标机器执行命令,默认是root
password=rootpass
//username对应的密码,默认先使用信任关系,如果没有信任关系则采用密码
command=echo ok //在目标机器上面指定的命令,默认是echo ok,可以修改为任意命令
timeout=30
//配置ssh超时值,默认超时时间是30s,请根据需要自行调整
[crypto] //加密配置部分
暂时不支持
[mail] //邮件配置部分
title=mssh //邮件标题
body=mssh exec task //邮件主体
mode=text //邮件模式,支持text和html
maillist=
//邮件接收人,默认为空,多个邮件接收人之间使用";"分隔
fr_addr=xxx@xxx //邮件发送人地址
注:
发送邮件选项仅-m开启的时候才生效。
3.3.10
一些常见的用法:
执行命令,命令结果输出到终端
./mssh -f file -cmd "wget -O /tmp/xxx.sh http://xxx/xxx.sh
&& sh /tmp/xxx.sh"
执行命令,命令结果输出到终端,并且将执行命令出错的机器列表发送给当前登录用户
./mssh -f file -m -cmd "wget -O /tmp/xxx.sh http://xxx/xxx.sh
&& sh /tmp/xxx.sh"
重定向标准输出和标准错误到文件
./mssh -f file -m -cmd "wget -O /tmp/xxx.sh http://xxx/xxx.sh
&& sh /tmp/xxx.sh" 1> `date +%F`.log.txt 2>
`date +%F`.err.txt
后台运行,并且将正常输出和错误输出到文件,方便后续查看
nohup ./mssh -f file -m -cmd "wget -O /tmp/xxx.sh
http://xxx/xxx.sh && sh /tmp/xxx.sh" 1> `date
+%F`.log.txt 2> `date +%F`.err.txt &
执行shell脚本
./mssh -f file -m -s -cmd tmp.sh
执行命令(注意,mssh的非-参数,会被当成cmd的参数)
./mssh -f file -cmd "ls -al" /tmp /root
执行默认命令(echo ok)
./mssh -f file
3.3.11
高级用法:
./mssh -f file
file 文件格式1
10.1.1.1
10.1.1.2
file 文件格式2
10.1.1.1 root
10.1.1.2 guest
file 文件格式3
10.1.1.1 root rootpass
10.1.1.2 guest guestpass
file 文件格式4
10.1.1.1 root rootpass ls -al
10.1.1.2 guest guestpass echo ok
file 文件格式5
10.1.1.1 root rootpass
10.1.1.2 guest guestpass echo ok
10.1.1.3
10.1.1.4 root
如果相关字段missing,那么将会使用配置文件的配置。
如:file 文件格式5 中 10.1.1.3 用户名、用户名密码、命令missing,
那么对应默认值为10.1.1.3 root rootpass echo ok
4、执行结果显示
./mssh -f ip1 -m
**************************************** [ 1 ]
****************************************
192.168.100.1:
ok
**************************************** [ 2 ]
****************************************
192.168.100.2:
ok
**************************************** [ 3 ]
****************************************
192.168.100.3:
ok
5、安装mssh
配置go环境
go get -u
https://github.com/xuewuhen/mssh
cd $GOPATH/src/github.com/xuewuhen
cd mssh
go build
没来得急看,应该不错,先帮你顶