在 bash 腳本中呼叫並行 ssh (pssh)

在 bash 腳本中呼叫並行 ssh (pssh)

我可以使用命令在一系列機器上並行運行命令pssh。例如,要foo在多台電腦上建立一個資料夾,hosts.txt我可以運行:

pssh -h hosts.txt -l MyUserName "mkdir foo"

但由於該命令需要更多參數(即使用公鑰進行身份驗證等),我嘗試創建以下 bash 腳本bar.sh,這樣我想要運行的命令就簡單地作為腳本的參數給出:

#!/bin/bash
pssh -h hosts.txt -l MyUserName "$@"

但是運行bar.sh mkdir foo會凍結終端,即使我也無法使用 Ctrl+C 殺死它。

有任何想法嗎?

答案1

我不太熟悉pssh。如果使用 GNU Parallel,您是否會遇到相同的錯誤:

#!/bin/bash
parallel -j10 --slf hosts.txt --nonall "$@"

將使用者名稱放入hosts.txt中:

myuser@host1
myuser@host2

答案2

需要使用 -i (每個伺服器的內聯聚合輸出和錯誤),以下將起作用:

pssh -h pssh.txt -l root -i uptime

相關內容