PSSH提供OpenSSH和相关工具的并行版本。包括pssh,pscp,prsync,pnuke和pslurp。该项目包括psshlib,可以在自定义应用程序中使用。
pssh是python写的可以并发在多台机器上批量执行命令的工具,它的用法可以媲美ansible的一些简单用法,执行起来速度比ansible快它支持文件并行复制,远程命令执行,杀掉远程主机上的进程等等。杀手锏是文件并行复制,,当进行再远程主机批量上传下载的时候,最好使用它。
#三台centos7(做了sshke操作)
10.10.10.10 master
10.10.10.20 node01
10.10.10.30 node02
# 安装软件
[root@master ]$ yum install python-pip -y
# 将ip写入脚本中
[root@master ]$ cat > ip.md << EOF
10.10.10.20
10.10.10.30
EOF
# 了解下pssh的参数说明
-h --hosts HOST_FILE 后边跟远程主机列表(ip)
-H --host HOST_STRING 后边跟远程主机名或者ip地址
-l --user USER 指定远程主机的用户名
-p --par PAR 指定pssh最大的并行线程数。
-o --outdir 将输出的内容重定向到一个指定的文件中
-O --options 指定ssh参数的具体配置
-e --errdir 将执行错误重定向到一个指定的文件中
-t --timeout 设定命令执行超时时间
-x --extra-args 传递ssh命令的一些参数
-i --inline-stdout 在远程主机上执行命令完成后显示标准输出和标准错误
-P --print 在执行远程命令时,输出执行结果
-A --askpass 输入密码
# pssh使用
## 获取其他服务器update
[root@master ]$ pssh -h ip.md -o /tmp/uptime uptime
[1] 22:49:05 [SUCCESS] 10.10.10.20
[2] 22:49:05 [SUCCESS] 10.10.10.30
## 找到/tmp/uptime目录下根据ip里面会存在uptime的信息
[root@master ]$ cat /tmp/uptime/10.10.10.20
22:49:05 up 1 days, 11:42, 1 user, load average: 0.00, 0.03, 0.05
## 直接在页面输出
[root@master ]$ pssh -h ip.md -o /tmp/uptime -i 'uptime'
[1] 22:51:17 [SUCCESS] 10.10.10.20
22:51:17 up 1 days, 11:44, 1 user, load average: 0.05, 0.07, 0.06
[2] 22:51:17 [SUCCESS] 10.10.10.30
22:51:17 up 1 days, 11:36, 1 user, load average: 0.00, 0.02, 0.05
# pscp 传输文件
## 创建一个文件
[root@master ]$ echo 'success' > success1.md
## 将success.md发送到其他服务器
[root@master ]$ pscp -h ip.md success1.md /root/
[1] 22:55:15 [SUCCESS] 10.10.10.20
[2] 22:55:15 [SUCCESS] 10.10.10.30
## 查看情况
[root@master ]$ pssh -h ip.md -i 'ls -lh /root/success1.md'
[1] 22:56:46 [SUCCESS] 10.10.10.20
-rw-r--r-- 1 root root 8 Dec 17 22:55 /root/success1.md
[2] 22:56:46 [SUCCESS] 10.10.10.20
-rw-r--r-- 1 root root 8 Dec 17 22:55 /root/success1.md
# prsync 传输文件
## 创建一个文件
[root@master ]$ echo 'success' > success2.md
## 将success.md发送到其他服务器
[root@master ]$ prsync -h ip.md success2.md /root/
[1] 22:59:30 [SUCCESS] 10.10.10.20
[2] 22:59:30 [SUCCESS] 10.10.10.30
## 查看情况
[root@master ]$ pssh -h ip.md -i 'ls -lh /root/success2.md'
[1] 23:01:23 [SUCCESS] 10.10.10.20
-rw-r--r-- 1 root root 8 Dec 17 22:59 /root/success2.md
[2] 23:01:23 [SUCCESS] 10.10.10.20
-rw-r--r-- 1 root root 8 Dec 17 22:59 /root/success2.md
# pslurp 回收文件
## 使用语法 pslurp -h ip文件 -L 本地目录 远程文件 本地文件名称
[root@master ]$ pslurp -h ip.md -L /tmp/ /root/success2.md .
## 验证目录
[root@master ]$ ll /tmp/10.10.10.20/
total 4
-rw-r--r-- 1 root 8 Dec 17 23:03 success2.md
# pnuke 杀死进程
## 使用语法 pnuke -h ip文件 进程名 等同于 killall 进程名
## 安装httpd
[root@master ]$ pssh -h ip.md 'yum install httpd -y '
[1] 23:10:04 [SUCCESS] 10.10.10.20
[2] 23:10:04 [SUCCESS] 10.10.10.30
## 启动httpd进程
[root@master ]$ pssh -h ip.md 'systemctl start httpd'
[1] 23:10:14 [SUCCESS] 10.10.10.20
[2] 23:10:14 [SUCCESS] 10.10.10.30
## 杀出httpd进程
[root@master ]$ pnuke -h ip.md httpd
[1] 23:10:27 [SUCCESS] 10.10.10.20
[2] 23:10:27 [SUCCESS] 10.10.10.30
# 这里介绍四种内容,分发,执行命令,回收、杀死进程,满足了基本所需,操作也比较简单.
https://www.cnblogs.com/clsn/p/10206048.html
https://blog.csdn.net/weixin_30367543/article/details/94910207