2011-09-26 82 views

回答

1

除非我不正确地理解你的问题:你不需要做到这一点。除非您自己明确这么做,否则不会自动从标准输入读取/写入远程进程的标准输入。所以你不需要防止从stdin读取发生?

编辑:如果远程进程需要stdin上的数据,并且一直在等待它,可能会出现问题?尝试在通道上调用shutdown_write()

stdin, stdout, stderr = client.exec_command(cmd) 
stdin.channel.shutdown_write() 
+0

那么,在这种情况下,它似乎我做到了。我试图在远程主机上执行一些powershell命令,并花费数小时的时间试图使它与Paramiko一起工作。我终于得出结论,为了这个工作,我需要做“ssh -n user @ host cmd”,而“ssh user @ host cmd”只会永远挂起。通过使用OpenSSH客户端的命令行手动执行,确认没有-n标志,远程命令会挂起。 – herira

+0

@herira:我已经更新了我的答案,不知道它会有帮助吗? – Steven

+0

希望我在几个小时前问过。谢谢,史蒂文! :) – herira

1

我会沟的paramiko并开始使用fabric。它会让你在系统上进行远程调用。它使用paramiko的SSH连接,并提供了很好的干净的界面,做更多。

我不知道为什么你需要将标准输入到/ dev/null,但是有一些设置可以使用结构来压制它。

Goodluck!

+0

谢谢,我会在时间允许的情况下对此进行调查。现在我有一个截止日期,说我使用史蒂文斯解决方案。 :) – herira