Linux操作多臺主機腳本/工具

1,用腳本從信任主機下發命令到多臺主機(不復制文件只執行命令的情況下):

首先需要指定一臺主機作爲信任主機,這樣從這臺主機登錄其他機器就不需要密碼了。

如何設置信任主機(以node1爲例)?

ssh-keygen

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

 

for host in node{2,3,4,5,6};do echo $host; ssh-copy-id -i /root/.ssh/id_rsa root@$host;done

或者

使用自動化配置方法

 

在信任主機上執行上述命令,紅色IP處填其他機器的IP地址,這樣從信任主機登錄該IP就不需要密碼了。

一個含有其他機器IP地址的hostlist文本文件hostlist,放在信任主機上(和腳本放在同一目錄)

比如你有4臺機器IP地址分別爲192.168.2.1~192.168.2.4

文本文件hostlist可以如下

192.168.2.1

192.168.2.2

192.168.2.3

192.168.2.4

腳本會按行去遍歷hostlist

doCommand 腳本:

#!/bin/sh

doCommand()

{

hosts=`sed -n '/^[^#]/p' hostlist`

for host in $hosts

do

echo ""

echo HOST $host

ssh $host "$@"

done

return 0

}

if [ $# -lt 1 ]

then

echo "$0 cmd"

exit

fi

doCommand "$@"

echo "return from doCommand"

 

執行命令(記得先對doCommand.sh增加執行權限 chmod u+x doCommand.sh)

./doCommand.sh “ls -al /root/”

這樣該腳本就會在每臺機器上執行”ls -al /root/”這個命令,並返回結果在信任主機上。

 

2、使用pyhon工具pssh:

工具下載地址:http://www.theether.org/pssh/ 下載需要的版本tar或者rpm包(以 pssh-1.4.3.tar.gz 爲例):

上傳到指定目錄下並解壓,進入pssh-1.4.3/ 即可通過命令:

bin/pssh -h hostlist -l username -o 日誌輸出路徑 執行命令

 

也可以先配置對應的環境變量;然後直接通過命令執行:

pssh -h hostlist -l username -o 日誌輸出路徑 執行命令

 

bin下邊的幾個腳本作用說明:

pssh:在遠程多臺主機上並行運行命令

pscp :把文件並行複製到多臺遠程主機上

prsync:使用rsync協議本地文件同步到遠程多臺主機上。

pnuke:在遠程多臺主機上並行killall某一進程

pslurp:把文件從遠程多臺主機上覆制到本地主機上

 

參數:

--version:查看版本

--help:查看幫助,即此信息

-l --user username (OPTIONAL)

-h:主機文件列表,內容格式”[user@]host[:port]”

-H:主機字符串,內容格式”[user@]host[:port]”

-:登錄使用的用戶名

-p:併發的線程數【可選】

-o:輸出的文件目錄【可選】

-e:錯誤輸入文件【可選】

-t:TIMEOUT 超時時間設置,0無限制【可選】

-O:SSH的選項

-v:詳細模式

-A:手動輸入密碼模式

-x:額外的命令行參數使用空白符號,引號,反斜線處理

-X:額外的命令行參數,單個參數模式,同-x

-i:每個服務器內部處理信息輸出

-P:打印出服務器返回信息

來自: http://man.linuxde.net/pssh

 

例子:

hostlis列表文件:

192.168.2.1

192.168.2.2

192.168.2.3

192.168.2.4

在每臺主機 /tmp下創建文件夾test_dir:

pssh -h hostlist "mkdir /tmp/test_dir" (不加-l 默認當前登錄用戶)

 

複製當前目錄下的command.sh 文件到每臺主機的 /tmp/test_dir 目錄下:

pscp -h hostlist -l root command.sh /tmp/test_dir/

 

刪除每臺主機剛剛創建的目錄:

pssh -h hostlist -l carpo -o ./out "rm -rf /tmp/test_dir"

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章