paramiko exec_command禁用标准输入

时间:2019-01-28 19:16:51

标签: python paramiko

我可以使用paramiko.SSHClient.exec_command()来模仿ssh -n命令行选项吗?

-n' Redirects stdin from /dev/null (actually, prevents reading from stdin). 

我唯一的解决方案是使命令混乱并显式管理stdin。


在此示例中,bash脚本等待一行stdin。检查exit_status可让我确定远程脚本是否已完成。

>>> import paramiko
>>> client = paramiko.SSHClient()
>>> client.connect(**kwargs)

>>> i, o, e = client.exec_command("cat /tmp/one_input.sh")
>>> o.channel.exit_status_ready()
True
>>> print o.read()
echo "started"
read
echo "done"

>>> i, o, e = client.exec_command("bash /tmp/one_input.sh")
>>> o.channel.exit_status_ready()
False
>>> i.write("\n")
>>> o.channel.exit_status_ready()
True

>>> i, o, e = client.exec_command("bash /tmp/one_input.sh </dev/null")
>>> o.channel.exit_status_ready()
True