Linux操作多台主機指令碼 工具

2021-08-24 17:34:53 字數 2327 閱讀 8412

1,用指令碼從信任主機下發命令到多台主機(不複製檔案只執行命令的情況下):

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

如何設定信任主機(以node1為例)?

ssh-keygen

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

chmod 700 ~/.ssh

chmod 600 ~/.ssh/authorized_keys

for host in node;do echo $host; ssh-copy-id -i /root/.ssh/id_rsa root@$host;done

或者使用自動化配置方法

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

比如你有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

doecho ""

echo host $host

ssh $host "$@"

done

return 0

if [ $# -lt 1 ]

then

echo "$0 cmd"

exit

fidocommand "$@"

echo "return from docommand"

執行命令(記得先對docommand.sh增加執行許可權 chmod u+x docommand.sh)

./docommand.sh 「ls -al /root/」

這樣該指令碼就會在每台機器上執行」ls -al /root/」這個命令,並返回結果在信任主機上。

2、使用pyhon工具pssh:

上傳到指定目錄下並解壓,進入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:列印出伺服器返回資訊

來自: 

例子: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"

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

如果你只維護著1臺機器,這篇文章對你可能就沒啥用處了。如果你維護著大量的linux主機,就需要這樣乙個指令碼幫助你完成日常維護工作,指令碼很簡單,主要是提供乙個思路,其他功能的腳步都可以按照此指令碼的流程實現。1 首先你需要指定一台主機作為信任主機,這樣從這台主機登入其他機器就不需要密碼了。如何設定...

Oceanbase多台主機間用指令碼同步檔案的方法

bin bash dir dirname 0 bin dir bin etc dir etc lib dir lib remote addr xiao 10.1.1.1 tb ob test2 cs cmd chunkserver cs conf chunkserver.conf ms cmd me...

605 appium操作多台手機常見問題

desired caps 另外再詳細說一下最後一項配置,即 udid be7c2d7f 打個比方 你的電腦上邊了連線了三颱手機,那麼你執行adb devices會出現三颱手機,那麼你的指令碼就必須要指定udid 來說明你要控制具體哪一台手機,如果不指定,也不會同時控制三颱,只會預設控制第一台。udi...