1.pssh介绍
pssh是python写的可以并发在多台机器上批量执行命令的工具,它的用法可以媲美ansible的一些简单用法,执行起来速度比ansible快它支持文件并行复制,远程命令执行,杀掉远程主机上的进程等等。杀手锏是文件并行复制,,当进行再远程主机批量上传下载的时候,最好使用它。
2.pssh的使用
在使用pssh之前,必须要保证管理主机和本地主机进行过密钥的认证,或者是在进行批量时,没有做过密钥认证,但是必须保证被管理的多台主机的密码相同。关于如何做密钥认证,这里就不多说了,可以自行百度。
2.1安装
官网地址:https://code.google.com/archive/p/parallel-ssh/downloads(需要能打开谷歌)
或者是yum 来安装
wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/parallel-ssh/pssh-2.3.1.tar.gztar -zxvf pssh-2.3.1.tar.gz cd pssh-2.3.1python setup.py install 或者 yum install -y pssh
使用yum安装后,只能使用pssh,但是编译安装后会包括其他命令也安装了(pscp prsync pnuke pslurp)
pssh:在远程多台主机上并行运行命令
pscp :把文件并行复制到多台远程主机上
prsync:使用rsync协议本地文件同步到远程多台主机上。
pnuke:在远程多台主机上并行killall某一进程
pslurp:把文件从远程多台主机上复制到本地主机上
2.2 pssh常用参数
具体常用介绍:
-h HOST_FILE 后边跟远程主机列表(ip)
-H HOST_STRING 后边跟远程主机名或者ip地址
-l USER 指定远程主机的用户名
-p PAR 指定pssh最大的并行线程数。
-o 将输出的内容重定向到一个指定的文件中
-O 指定ssh参数的具体配置
-e 将执行错误重定向到一个指定的文件中
-t 设定命令执行超时时间
-x 传递ssh命令的一些参数
-i 在远程主机上执行命令完成后显示标准输出和标准错误
-P 在执行远程命令时,输出执行结果
用法实例:
pssh -P -i -h sz_vpc.txt "w" # pssh -P -h test.txt uptime 192.168.9.102: 14:04:58 up 26 days, 17:05, 0 users, load average: 0.07, 0.02, 0.00 192.168.9.102: [1] 14:04:58 [SUCCESS] 192.168.9.102 9922 192.168.8.171: 14:04:59 up 35 days, 2:01, 6 users, load average: 0.00, 0.00, 0.00 192.168.8.171: [2] 14:04:59 [SUCCESS] 192.168.8.171 22 192.168.9.104: 14:04:59 up 7 days, 20:59, 0 users, load average: 0.10, 0.04, 0.01 192.168.9.104: [3] 14:04:59 [SUCCESS] 192.168.9.104 9922 # cat test.txt 192.168.9.102:9922 192.168.9.104:9922 192.168.8.171:22 //注意我的端口号不仅是默认的22 假如想将输出重定向到一个文件 加-o file 选项
3.pscp拷贝文件到远程主机
pscp -h ip.txt /etc/wenjian.txt /tmp/
4.pnuke杀掉某一进程
这个命令类似yu killall命令
pnuke -h iplist.txt httpd
上边的意思是在远程主机上批量关闭httpd服务
能通过killall关闭的服务,都可以通过pnuke来批量完成
5.pslurp 远程主机拷贝文件到本地主机
pslurp -h iplist.txt -L /home/ /hose/wenjian/yuanc.conf open.conf
上边是,将所有远程主机/hose/wenjian/yuanc.conf复制到本地主机/home/目录下,并且重新命名为open.conf -L 来指定本地文件路径
下面这个是拷贝目录
pslurp -h iplist.txt -r -L /home/ /hose/wenjian/ open
6.prsync 使用rsync协议从本地计算机同步到远程主机
# pssh -h test.txt -P mkdir /tmp/etc
# prsync -h test.txt -l dongwm -a -r /etc/sysconfig /tmp/etc //标示将本地的/etc/sysconfig目录递归同步到目标服务器的 /tmp/etc目录下,并保持原来的时间戳,使用用户 dongwm
7.多条命令执行脚本
# cat leo.sh
cd /u02/applications
tar -zcf websiteinterface-$(date +%Y%m%d-%H%M).tgz websiteinterface
pssh -h ip.txt -i -P "$(cat leo.sh)"
pssh -h ip.txt -i -P "`cat leo.sh`"
切记一定要有引号
本文转自leonardos51CTO博客,原文链接: http://blog.51cto.com/leomars/1917767,如需转载请自行联系原作者