我必須在多台伺服器上執行以下步驟:
- 使用我的用戶名登入
- 輸入
sudo su -
- 輸入
amCLI -l 32/1 | grep Firmware
所以我想把這一切寫在一個腳本中,我的想法是:
#!bin/bash
for hostname in DPM-BZ0201 DPM-BZ0202
do
ssh -n vneudeck@$hostname "sudo su-; amCLI -l 32/1 | grep Firmware"
done
或者
#!bin/bash
for hostname in DPM-BZ0201 DPM-BZ0202
do
ssh -n vneudeck@$hostname "sudo amCLI -l 32/1 | grep Firmware"
done
但兩者都不起作用。
答案1
更好的解決方案是設定 sudo,以便您的用戶/full/path/to/amCLI
無需提供密碼即可執行。
然後你可以簡單地
#!bin/bash
for hostname in DPM-BZ0201 DPM-BZ0202
do
ssh -n vneudeck@$hostname sudo /full/path/to/amCLI -l 32/1 | grep Firmware
done
答案2
也許如果你把 vneudeck@$hostname 用雙引號括起來,會有幫助。 su 和 - 我希望它有幫助
答案3
第一個不起作用:
sudo su -; amCLI -l 32/1 | grep Firmware
這將執行sudo su -
,當它返回時(即當您以 root 身份處理完命令並退出時),它將執行 amCLI。 (另請注意,替代方案sudo su
是sudo -s
,但sudo su -
我認為它的作用更多。)
第二個版本可能在某些條件下運作:sudo
不應該要求輸入密碼,並且amCLI
應該位於 PATH 中(不是 root 的路徑,可能在您鍵入 時設置sudo su -
,而是您的路徑,因為 sudo 使用您的路徑)。嘗試指定 的完整路徑amCLI
,例如/usr/local/sbin/amCLI
或其他任何路徑。