我需要每天登录远程服务器并执行相同的任务。我使用的是 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
和cd
在内执行一个儿童壳由 执行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