我正在尝试通过Python远程执行SSH命令,并且在这种特殊情况下需要将stdin重定向到/dev/null。
也就是说,与使用OpenSSH客户端的-n标志相同:
也就是说,与使用OpenSSH客户端的-n标志相同:
ssh -n user@host cmd
如何使用Paramiko实现(-n)?
看起来paramiko.SSHClient.exec_command()不允许这样做,但也许我漏掉了什么?
shutdown_write()
:stdin, stdout, stderr = client.exec_command(cmd)
stdin.channel.shutdown_write()
我建议放弃使用paramiko,开始使用fabric。它可以让你在系统上进行远程调用。它使用paramiko进行ssh连接,并提供了更好的干净接口来完成更多任务。
我不确定为什么你需要将stdin pip到/dev/null,但是fabric有一些设置可以抑制它。
祝你好运!