运维自动化轻量级工具pssh

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,如需转载请自行联系原作者



上一篇:必备收藏| centos7安装Python3并且将pip设置为Python3中的pip


下一篇:Android Studio HAXM和AMD …?