我可以使用命令在一系列機器上並行運行命令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