c4rt1y

自动化运维-PSSH

0x01 介绍

PSSH提供OpenSSH和相关工具的并行版本。包括pssh,pscp,prsync,pnuke和pslurp。该项目包括psshlib,可以在自定义应用程序中使用。
pssh是python写的可以并发在多台机器上批量执行命令的工具,它的用法可以媲美ansible的一些简单用法,执行起来速度比ansible快它支持文件并行复制,远程命令执行,杀掉远程主机上的进程等等。杀手锏是文件并行复制,,当进行再远程主机批量上传下载的时候,最好使用它。

0x02 环境安装与使用

#三台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	


# 这里介绍四种内容,分发,执行命令,回收、杀死进程,满足了基本所需,操作也比较简单.

0x03 资料来源

https://www.cnblogs.com/clsn/p/10206048.html
https://blog.csdn.net/weixin_30367543/article/details/94910207
GoTop