【发布时间】:2013-12-28 05:02:21
【问题描述】:
作为python脚本的一部分,我希望捕获通过ssh执行的shell命令的输出,即
ssh User@999 screen -list
如果我直接在终端中执行上述命令,我会得到我需要的结果。但是,如下所示通过subprocess.check_output 执行时,我收到non-zero exit status 1 错误。
我能够通过 ssh 执行其他命令并毫无问题地捕获输出。screen -list 是否有一些不喜欢以这种方式被调用的特定内容?
import subprocess
srvr = 'User@999.99.999.9'
print("CMD 1: ===============")
cmd1 = "ssh " + srvr + " ls -l"
print ("COMMAND IS ..... " + cmd1 + "\n")
out1 = subprocess.check_output(cmd1, shell=True)
print(out1 + "\n")
print("CMD 2: ===============")
cmd2 = "ssh " + srvr + " screen -list"
print ("COMMAND IS ..... " + cmd2 + "\n")
out2 = subprocess.check_output(cmd2, shell=True)
print(out2 + "\n")
错误:
subprocess.CalledProcessError: Command '['ssh User@999.99.999.9 screen', '-list']' returned non-zero exit status 1
【问题讨论】:
-
您是否尝试过从子进程的
stderr捕获更多输出?这可能会为您提供有关正在发生的事情的线索...
标签: python ssh subprocess gnu-screen