1. 程式人生 > >Linux多臺主機批量執行命令

Linux多臺主機批量執行命令

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/”這個命令,並返回結果在信任主機上。