維護集群時,常常需要在大量服務器上執(zhí)行相同的命令,雖然可以自己寫循環(huán)執(zhí)行腳本,但是不僅麻煩而且執(zhí)行效率不高。此時我們通常會使用pssh工具來并發(fā)執(zhí)行SSH指令。
- 控制機以centos7系統(tǒng)為例
- 安裝 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 內(nèi)容格式如下:
172.18.0.11
172.18.0.12:2222
172.18.0.13:3333
如果SSH默認22端口可以不用加端口。如果SSH端口不同,可在ip后面加上端口號。
成功返回 **SUCCESS**
失敗返回 **FAILURE**
pssh 常用參數(shù)
-h主機名列表文件
-l登陸用戶名,例如 -l root
-A提供統(tǒng)一的登陸密碼
-i交互模式,遠程服務器的命令執(zhí)行結果會輸出
-O ssh參數(shù)
- sshpass 常用參數(shù)
-f 指定密碼文件
-p 指定密碼