使用 sudo 命令腳本 SSH 伺服器

使用 sudo 命令腳本 SSH 伺服器

我必須在多台伺服器上執行以下步驟:

  1. 使用我的用戶名登入
  2. 輸入sudo su -
  3. 輸入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 susudo -s,但sudo su -我認為它的作用更多。)

第二個版本可能在某些條件下運作:sudo不應該要求輸入密碼,並且amCLI應該位於 PATH 中(不是 root 的路徑,可能在您鍵入 時設置sudo su -,而是您的路徑,因為 sudo 使用您的路徑)。嘗試指定 的完整路徑amCLI,例如/usr/local/sbin/amCLI或其他任何路徑。

相關內容