我正在通过 plink 连接到服务器,如下所示:
plink -ssh -l username -pw password example.host.com -m C:\Putty\input.txt > C:\Putty\output.txt
input.txt 包含
whoami
su - newsuser
whoami
output.txt 包含
username
username
SU 无法通过 plink 工作。
如果在 putty 中尝试相同的命令,它工作正常,并得到如下输出“新闻用户”。
我尝试了上述解决方案,但它对我没有作用。
谢谢
答案1
首先,它并不像你想象的那样工作。
脚本中的命令按顺序执行。su
(如果成功)将执行交互式 shell 会话并等待用户输入(命令)。只有存在时su
,第二个whoami
才会运行(显示username
)。
不管怎样,你的su
确实不起作用。
首先,su
肯定会输出一些错误消息。那是什么?您只能在命令中捕获标准输出。也捕获错误输出(2>&1
)。它很可能会失败,因为su
可能需要交互式终端,而带-m
开关的 Plink 默认使用非交互式终端。添加-t
转变在这种情况下有帮助。
请注意,自动化su
通常不是一个好主意。如果您需要运行一些需要 root 权限的命令,更好的解决方案是将专用私钥与sudoers
文件中的命令关联。然后sudo
在 Plink 中使用私钥。