Linux多臺主機批量命令指令碼
阿新 • • 發佈:2022-05-13
一、準備工作
1、機器準備
192.168.255.180 此臺是信任機器
192.168.255.150 這些都是批量操作機器
.....
2、免密ssh登入
vim /etc/hosts 192.168.255.150 node1 ... ssh-keygen #3個回車 生成金鑰 ssh-copy-id -i .ssh/id_rsa.pub root@192.168.255.150 #複製金鑰 ssh root@192.168.255.200 #測試免密結果
二、指令碼測試
1、準備ip列表
2、指令碼編寫
vim test.sh #!/bin/sh cmdexec() { hosts=`sed -n '/^[^#]/p' macs` #macs是ip列表 for host in $hosts do echo "" echo HOST $host ssh -i /root/testpair.pem root@$host "$@" #這裡是ssh注意使用者名稱 done return 0 } if [ $# -lt 1 ] then echo"$0 cmd" exit fi cmdexec "$@" echo "return from cmdexec"
備註:這個指令碼的大概意思就是函式for迴圈呼叫ip列表裡的ip,然後if判斷是否連線所有的ip,直到$#小於1為止,代表連線所有
3、測試指令碼
chmod +x test.sh #加執行許可權
./test.sh "寫你需要執行的命令即可"