Python,Paramiko:如何使用paramiko执行“ssh -n user @ host cmd”?

时间:2011-09-26 13:28:12

标签: python ssh paramiko

我正在尝试通过SSH从Python远程执行命令,在这种特殊情况下,需要将 stdin 重定向到/ dev / null。

也就是说,与使用带有-n标志的OpenSSH客户端相同:

ssh -n user@host cmd

如何使用Paramiko实现此目标(-n)?

paramiko.SSHClient.exec_command()似乎不允许这样,但也许我错过了什么?

2 个答案:

答案 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来抑制它。

古德勒克!