Linux
ssh 到多個主機和 sudo 多個命令
我需要遍歷並 ssh 到多個主機並在每個主機上執行一系列命令。
就像是:
for i in $(jot -w '%02.0f' 14 1) >do ssh user@host$i sudo -i "command1; command2; command3" >done
但我無法讓它正常工作。我在 Google 上看到過各種各樣的東西,比如
sudo sh -c
sudo 等,但無法弄清楚。
- 我作為普通使用者使用 ssh,無需密碼即可 sudo(未啟用 ssh 作為 root)
- command1 不返回 0 不應阻止 command2 執行等,因此
;
- 我正在從 mac 執行循環,因此
jot -w
,這大致相當於seq -f
在 linux 中- SSH 到 CentOS 5.4
- 我希望它與 root 的 $PATH 一起執行,所以我不必指定命令的完整路徑,但這不是完全必要的
提前致謝!
我發現正確引用是很煩人的。相反,我傾向於通過管道將命令傳遞給遠端主機上的 bash。這樣您就不必擔心在 ssh 命令行中正確轉義。如果您以互動方式連接,只需將您輸入的內容準確地傳遞到管道中。
CMDS="sudo bash -c '/usr/bin/id; /usr/bin/id; '/usr/bin/id" for i in 0 1; do echo $CMDS | ssh -t host$i bash done
哪個返回
uid=0(root) gid=0(root) groups=0(root) uid=0(root) gid=0(root) groups=0(root) uid=0(root) gid=0(root) groups=0(root)