1. 程式人生 > 其它 >Linux多臺主機批量命令指令碼

Linux多臺主機批量命令指令碼

一、準備工作

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 "寫你需要執行的命令即可"