首先是一般免责声明(针对那些偶然发现此问题的人):
- 使用
su
不是正确的解决方案。su
是一种旨在用于交互式用途而非自动化的工具。正确的解决方案是直接使用正确的帐户登录。
或至少使用无密码
sudo。
或者,您可以使用
setuidright创建一个根所有者脚本。
另请参见在Linux上使用SSH以root身份自动执行命令。
- 如果您坚持使用
su
,在大多数系统上,可以使用-c
switchsu
来指定命令:su -c "whoami" user
如果以上都不可行(并且您确实在尽力使管理员启用上述某些选项):
作为最后的选择,您可以将命令写到的标准输入中
su,就像您已经写过密码一样(另一件事是不这样做):
stdin, stdout, stderr = session.exec_command("su -l " + user_to_log)stdin.write(password_to_log + 'n')stdin.flush()command = 'whoami'stdin.write(command + 'n')stdin.flush()
(还请注意,调用多余
makefile,因为
exec_command已经返回了)
请注意,您的问题不是关于要使用哪个SSH客户端库。 不管您使用Paramiko还是其他。这实际上是一个通用的SSH / shell问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)