PSSH是一个python编写可以在多台服务器上执行命令的工具,同时支持拷贝文件,是同类工具中很出色的。类似pdsh,但是相对pdsh更为简便,使用前必须在各个服务器上配置好密钥认证访问
主机 | IP |
---|---|
管理主机 | 192.168.182.10 |
被管理主机 - 1 | 192.168.182.11 |
被管理主机 - 2 | 192.168.182.12 |
[root@master ~]# yum install -y pssh
百度网盘 ------- 提取码:ltwl
[root@master ~]# wget http://parallel-ssh.googlecode.com/files/pssh-2.3.1.tar.gz
[root@master ~]# tar xf pssh-2.3.1.tar.gz
[root@master ~]# cd pssh-2.3.1/
[root@master ~]# python setup.py build
[root@master ~]# python setup.py install ///centos6-py版本为2.6、centos7-py版本为2.7
[root@master ~]# sudo apt-get install pssh
PS1:ubuntu安装完pssh后,输入pssh,也许会提示:No command ‘pssh’ found, did you mean:…
[root@master ~]# echo "alias pssh=parallel-ssh" >> ~/.bashrc && . ~/.bashrc
PS2:安装完pssh后,还安装了pscp
、prsync
、pnuke
和pslurp
。和pssh命令无效的问题相同,它们默认也只能使用全名,不能只用简称。需要执行如下命令:
echo "alias pscp=parallel-scp" >> ~/.bashrc && . ~/.bashrc
echo "alias prsync=parallel-rsync" >> ~/.bashrc && . ~/.bashrc
echo "alias pnuke=parallel-nuke" >> ~/.bashrc && . ~/.bashrc
echo "alias pslurp=parallel-slurp" >> ~/.bashrc && . ~/.bashrc
命令格式:pssh [OPTIONS] command [...]
--version:查看版本
--help:查看帮助,即此信息
-h:主机文件列表,内容格式"[user@]host[:port]"
-H:主机字符串,内容格式"[user@]host[:port]"
-l:登录使用的用户名
-p:并发的线程数【可选】
-o:输出的文件目录【可选】
-e:错误输入文件【可选】
-t:TIMEOUT 超时时间设置,0无限制【可选】
-O:SSH的选项
-v:详细模式
-A:手动输入密码模式
-x:额外的命令行参数使用空白符号,引号,反斜线处理
-X:额外的命令行参数,单个参数模式,同-x
-i:每个服务器内部处理信息输出
-P:打印出服务器返回信息
[root@master ~]# ssh-keygen
[root@master ~]# for i in {0,1,2}; do ssh-copy-id -i 192.168.1.1$i ; done
[root@master ~]# pssh -H root@192.168.182.11 -i date
[1] 10:40:09 [SUCCESS] root@192.168.182.11
2020年 02月 06日 星期四 10:40:09 CST
[root@master ~]# cat ip.txt
192.168.182.11
192.168.182.12
执行 pssh -h ip.txt -i 命令
[root@master ~]# pssh -h ip.txt -i date
[1] 10:43:52 [SUCCESS] 192.168.182.11
2020年 02月 06日 星期四 10:43:52 CST
[2] 10:44:02 [SUCCESS] 192.168.182.12
2020年 02月 06日 星期四 10:44:02 CST
[root@master ~]# pssh -h ip.txt -i -o /villian/pssh/ date
[root@master ~]# ll /villian/pssh/
总用量 8
-rw-r--r--. 1 root root 43 2月 6 10:49 192.168.182.11
-rw-r--r--. 1 root root 43 2月 6 10:49 192.168.182.12
pscp.pssh
命令功能是将本地文件批量复制到远程主机
-v
:显示复制过程-a
: 复制过程中保留常规属性-r
:递归复制目录命令:pscp -h ip文件 本地目录文件名 远程文件存放目录
[root@master ~]# pscp -H 192.168.182.11 /root/ip.txt ~/
[1] 10:58:21 [SUCCESS] 192.168.182.11
[root@slave ~]# ll
-rw-r--r-- 1 root root 30 2月 6 10:58 ip.txt
pslurp.pssh
命令功能是将远程主机的文件批量复制到本地
-L
:指定从远程主机下载到本机的存储的目录,local是下载到本地后的名称-r
:递归复制目录命令:pslurp -h ip文件 -L 本地目录 远程文件 本地文件名称
[root@master ~]# pslurp -H 192.168.182.11 -L /root/villian/ /root/villian.sh zwl.sh
[root@master 192.168.182.11]# pwd
/root/villian/192.168.182.11
[root@master 192.168.182.11]# ls
zwl.sh
pnuke
命令功能是用于批量远程结束进程
命令:pnuke -h ip文件 进程名
[root@master ~]# pnuke -H 192.168.182.11 httpd
[1] 11:23:40 [SUCCESS] 192.168.182.11
[root@master ~]# cat ip.txt
root@192.168.182.11
root@192.168.182.12
[root@master ~]# pssh -h ip.txt -i uptime
[1] 11:20:15 [SUCCESS] root@192.168.182.11
11:20:15 up 1:17, 1 user, load average: 0.00, 0.01, 0.03
[2] 11:20:15 [SUCCESS] root@192.168.182.12
11:20:15 up 38 min, 1 user, load average: 0.00, 0.01, 0.05
[root@master ~]# pssh -h ip.txt -i -o /villian/pssh-1 uptime
[1] 11:21:35 [SUCCESS] root@192.168.182.11
11:21:35 up 1:18, 1 user, load average: 0.06, 0.03, 0.04
[2] 11:21:35 [SUCCESS] root@192.168.182.12
11:21:35 up 39 min, 1 user, load average: 0.00, 0.01, 0.05
[root@master ~]# ll /villian/pssh-1/
总用量 8
-rw-r--r--. 1 root root 61 2月 6 11:21 root@192.168.182.11
-rw-r--r--. 1 root root 62 2月 6 11:21 root@192.168.182.12
[root@master ~]# cat hosts ///注意,是hosts文件,不是hosts.txt文本
192.168.182.11 V1 ///IP与主机名Hostname对应关系
192.168.182.12 V2 ///IP与主机名Hostname对应关系
hostname.sh
批量修改脚本[root@master ~]# cat hostname.sh
#!/bin/bash
ip=`ifconfig ens33 | grep 'inet' | awk '{print $2}' | tr -d 'addr:'`
hostname=`cat /home/test/hosts | grep $ip | awk '{print $2}'`
echo $ip
echo $hostname
hostnamectl set-hostname --static $hostname
hostname $hostname
hosts
和hostname.sh脚本
发送至被管理主机[root@master ~]# pscp -h ip.txt /root/hosts /home/test
[root@master ~]# pscp -h ip.txt /root/hostname.sh /home/test
[root@master ~]# pssh -h ip.txt -i 'chmod +x /home/test/hostname.sh'
pssh -h ip.txt -i 'sh /home/test/hostname.sh'