Plink 不使用 su 命令切换用户

Plink 不使用 su 命令切换用户

我正在通过 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 中尝试相同的命令,它工作正常,并得到如下输出“新闻用户”

Linux PuTTY - 自动化 su 解决密码相关问题

我尝试了上述解决方案,但它对我没有作用。

谢谢

答案1

首先,它并不像你想象的那样工作。

脚本中的命令按顺序执行。su(如果成功)将执行交互式 shell 会话并等待用户输入(命令)。只有存在时su,第二个whoami才会运行(显示username)。


不管怎样,你的su确实不起作用。

首先,su肯定会输出一些错误消息。那是什么?您只能在命令中捕获标准输出。也捕获错误输出(2>&1)。它很可能会失败,因为su可能需要交互式终端,而带-m开关的 Plink 默认使用非交互式终端。添加-t转变在这种情况下有帮助。


请注意,自动化su通常不是一个好主意。如果您需要运行一些需要 root 权限的命令,更好的解决方案是将专用私钥与sudoers文件中的命令关联。然后sudo在 Plink 中使用私钥。

也可以看看允许使用 SSH 在 Linux 上以 root 身份自动执行命令

相关内容