我正在尝试通过SSH从Python远程执行命令,在这种特殊情况下,需要将 stdin 重定向到/ dev / null。
也就是说,与使用带有-n标志的OpenSSH客户端相同:
ssh -n user@host cmd
如何使用Paramiko实现此目标(-n)?
paramiko.SSHClient.exec_command()似乎不允许这样,但也许我错过了什么?
答案 0 :(得分:2)
除非我不正确地理解你的问题:你不需要实现这个目标。除非您自己明确地这样做,否则不会从stdin /写入远程进程的stdin中自动读取任何内容。所以你不需要阻止stdin的读取发生吗?
编辑:如果远程进程需要stdin上的数据并且一直等待它,可能会出现问题?尝试在频道上调用shutdown_write()
:
stdin, stdout, stderr = client.exec_command(cmd)
stdin.channel.shutdown_write()
答案 1 :(得分:1)
我会抛弃paramiko并开始使用fabric。它可以让你在系统上进行远程调用。它使用paramiko进行ssh连接,并提供了很好的干净界面,可以进行更多操作。
我不确定为什么你需要将stdin pip到/ dev / null,但是有一些设置可以用Fabric来抑制它。
古德勒克!