
我需要每天登入遠端伺服器並執行相同的任務集。我使用的是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
,等待其退出,然後再繼續執行其他命令(ls
和cd
)。並且sudo
不會退出(至少不會自行退出)。
當您希望ls
andcd
內執行時一個孩子的貝殼由 執行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