【发布时间】:2015-05-16 09:17:47
【问题描述】:
我正在尝试通过 ssh 发出命令并通过子进程获取其返回码。我有一些看起来像这样的代码:
cmd = 'ssh user@ip_addr "some_command"'
res = subprocess.check_output(
cmd,
shell=True,
stdout=subprocess.PIPE)
现在,如果 cmd 只生成退出代码(例如,将 cmd 设置为“exit 1”,然后执行 try/catch 以查看它是否以非零退出。但是,以下挂起无限期:
cmd = 'ssh user@ip_addr "ls -la && exit 0;"'
res = subprocess.check_output(
cmd,
shell=True,
stdout=subprocess.PIPE)
我看到two questions 那个looked similar 和我did RTFM,但我仍然不知道该怎么办。我真的不在乎命令是否生成输出;我更关心退出代码。如果有人知道这样做的最佳方法是什么,或者我是否不恰当地使用子流程,我将不胜感激。
【问题讨论】:
-
check_output似乎没有stdout参数。你的意思是stderr吗? -
我做到了,对此感到抱歉。
-
那么你需要看到关于 not 使用
stderr=PIPE的重要通知,因为它可能会挂在你指向的链接上。 -
你有没有机会在
ssh可能一直在等待你的密码的不同环境中运行第二个命令?
标签: python shell ssh subprocess