某些命令的子进程ssh命令失败,但其他命令没有失败(命令在终端中工作)

2024-05-19 22:26:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我希望通过python命令的一部分来捕获,即

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")

错误:

^{pr2}$

Tags: 命令cmdoutputcheck错误screensshcommand
2条回答

^{}检查子进程的退出代码;如果退出代码不为零,则会引发异常。在

如果不关心退出代码,请使用^{}

out1, err1 = subprocess.Popen(cmd1,
                              stdout=subprocess.PIPE,
                              stderr=subprocess.PIPE).communicate()

这就是subprocess.check_output()的工作原理。参见:http://docs.python.org/2/library/subprocess.html

服务器上的命令返回非零返回代码,因此引发了相应的异常CalledProcessError。在

相关问题 更多 >