我需要每天登录到远程服务器并执行相同的任务集。我正在使用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)
因为包含在中的命令是command.txt
由主shell一对一执行的。
因此,主外壳将执行sudo
,等待其退出,然后再执行其他命令(ls
和cd
)。并且sudo
不会退出(至少不会自行退出)。
当您希望ls
andcd
在由所执行的子shell中执行时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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句