通过批处理文件登录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不会退出(至少不会自行退出)。

虽然您希望lscd在内执行一个儿童壳由 执行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

相关内容