Python,Paramiko:如何执行“ssh -n user@host cmd”使用帕里科?
我正在尝试通过 SSH 从 Python 远程执行命令,在这种特殊情况下需要将 stdin 重定向到 /dev/null。
也就是说,与使用带有 -n 标志的 OpenSSH 客户端相同:
ssh -n user@host cmd
如何使用 实现此 (-n)帕拉米科?
paramiko.SSHClient.exec_command() 似乎不允许这样做,但也许我错过了一些东西?
I'm trying to execute a command remotely via SSH from Python, and in this particular case need stdin to be redirected to /dev/null.
That is, the same as using the OpenSSH client with its -n flag:
ssh -n user@host cmd
How do you achieve this (-n) with Paramiko?
paramiko.SSHClient.exec_command() doesn't seem to allow this, but maybe I'm missing something?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
除非我错误地理解了你的问题:你不需要实现这个目标。除非您自己明确这样做,否则不会自动从标准输入读取任何内容/写入远程进程的标准输入。所以你不需要阻止从标准输入读取的发生?
编辑:如果远程进程需要标准输入上的数据并一直等待它,可能会出现问题?尝试在通道上调用
shutdown_write()
:Unless I understand your question incorrectly: you don't need to achieve this. Nothing is automatically read from stdin/written to the remote process' stdin unless you yourself explicitly do so. So you don't need to prevent reading from stdin from happening?
EDIT: there might be an issue if the remote process expects data on stdin, and keeps waiting for it? Try calling
shutdown_write()
on the channel:我会放弃 paramiko 并开始使用 fabric。它可以让您在系统上进行远程调用。它使用 paramiko 进行 ssh 连接,并提供漂亮干净的界面来执行更多操作。
我不知道为什么你需要将 stdin 指向 /dev/null,但有一些设置可以用 Fabric 来抑制它。
祝你好运!
I would ditch paramiko and start using fabric. It will let you do remote calls on the system. It uses paramiko for the ssh connection and provides the nice clean interface for doing alot more.
I am not sure why you need to pip stdin to /dev/null but there are settings to suppress it with fabric.
Goodluck!