维护集群时,常常需要在大量服务器上执行相同的命令,虽然可以自己写循环执行脚本,但是不仅麻烦而且执行效率不高。此时我们通常会使用pssh工具来并发执行SSH指令。
- 控制机以centos7系统为例
- 安装 pssh和 sshpass
`yum -y install pssh`
`yum -y install sshpass`
- 批量获取机器名:
`sshpass -p 'password' pssh -O StrictHostKeyChecking=no -h ip.txt -l root -A -i "hostname"`
- 批量重启:
`sshpass -p 'password' pssh -O StrictHostKeyChecking=no -h ip.txt -l root -A -i "reboot"`
`password` 是root密码
ip.txt 内容格式如下:
172.18.0.11
172.18.0.12:2222
172.18.0.13:3333
如果SSH默认22端口可以不用加端口。如果SSH端口不同,可在ip后面加上端口号。
成功返回 **SUCCESS**
失败返回 **FAILURE**
pssh 常用参数
-h主机名列表文件
-l登陆用户名,例如 -l root
-A提供统一的登陆密码
-i交互模式,远程服务器的命令执行结果会输出
-O ssh参数
- sshpass 常用参数
-f 指定密码文件
-p 指定密码