透過批次檔登入PuTTY後在遠端伺服器中使用sudo執行指令

透過批次檔登入PuTTY後在遠端伺服器中使用sudo執行指令

我需要每天登入遠端伺服器並執行相同的任務集。我使用的是Windows平台,遠端​​伺服器是Unix。我使用 PuTTY 登入遠端伺服器。為了減少手動工作,我需要自動化這項任務。

我嘗試了這段程式碼:

start putty.exe -ssh -load session -l username -pw password -m command.txt -t

其中command.txt包含:

sudo su - user1 
ls 
cd directory

只有第一個指令command.txt有效,然後 PuTTY 等待使用者輸入。

我需要在沒有用戶輸入的情況下運行所有命令。

重要的事情:

  • 我不是root用戶

  • 授予存取權限以切換到user1無密碼

  • 我有一個限制,只能使用 PuTTY(不允許安裝 Plink)

答案1

因為包含在中的命令command.txt是由執行的一個主外殼一對一。

因此,主 shell 執行sudo,等待其退出,然後再繼續執行其他命令(lscd)。並且sudo不會退出(至少不會自行退出)。

當您希望lsandcd內執行時一個孩子的貝殼由 執行su

您必須告訴su執行命令。

這應該有效:

sudo su - -c "ls ; cd directory" user1

或這個

echo "ls; cd directory" | sudo su - user1

儘管我希望您確實想繼續在 shell 中工作。而一旦執行命令,上述內容就會退出。

因此,您想將 shell 新增到命令清單中:

sudo su - -c "ls ; cd directory ; /bin/bash" user1

或者

echo "ls ; cd directory ; /bin/bash" | sudo su - user1

相關內容