Linux多臺主機批量執行命令
阿新 • • 發佈:2019-01-07
1、首先你需要指定一臺主機作為信任主機,這樣從這臺主機登入其他機器就不需要密碼了。
如何設定信任主機?
假設有四臺機器:192.168.2.1~192.168.2.4,其中192.168.2.1為信任機,那麼在192.168.2.1上執行如下命令:
ssh-keygen -t rsa //此處一路回車,生成祕鑰
scp .ssh/id_rsa.pub 192.168.2.2:~/ //把祕鑰拷貝到其他遠端機器
ssh 192.168.2.2 ‘cat id_rsa.pub >> .ssh/authorized_keys’ //(遠端執行命令)在遠端機器上生成認證檔案
經過這幾步,從192.168.2.1 ssh登陸192.168.2.2時,就不會再需要輸入密碼了。同樣的步驟再執行3、4的極其。
2、在信任機器上建立hostlist文字,(和指令碼放在同一目錄)
文字檔案hostlist可以如下
192.168.2.2
192.168.2.3
192.168.2.4
3、建立doCommand.sh指令碼:
#!/bin/sh
doCommand()
{
hosts=`sed -n '/^[^#]/p' hostlist`
for host in $hosts
do
echo ""
echo HOST $host
ssh $host "[email protected] "
done
return 0
}
if [ $# -lt 1 ]
then
echo "$0 cmd"
exit
fi
doCommand "[email protected]"
echo "return from doCommand"
執行命令(記得先對doCommand.s
h增加執行許可權 chmod u+x doCommand.sh)
./doCommand.sh “ls -al /root/”
這樣該指令碼就會在每臺機器上執行”ls -al /root/”這個命令,並返回結果在信任主機上。