如何在Python中解析Linux终端错误信息?
问题描述:
我写了一个小的Python代码来测试一个更大的项目。如果一切正常的话,子流程很有效。但我想解析输出错误信息,以便发现特定的错误,以便我能够弄清楚错误是什么,例如 - IP不在网络中,或者错误的用户名,错误的密码。 即使在最后的打印不起作用。然而,我的兴趣在于不打印这些。我只是检查解析是否有效!如何在Python中解析Linux终端错误信息?
import sys
import subprocess
import os
ip = "192.168.1.20"
password = "password"
username = "sam"
ans = subprocess.check_output(['sudo','xfreerdp','-p',password, ip])
for line in ans.split('\n'):
if "protocol security negotiation" in line:
print "Not Windows!"
print "JUST TO test if this print works and it doesnt!!"
答
尝试使用try..except
import sys
import subprocess
import os
ip = "192.168.1.20"
password = "password"
username = "sam"
try:
ans = subprocess.check_output(['sudo','xfreerdp','-p',password, ip])
except subprocess.CalledProcessError as e:
ans = e.output
for line in ans.split('\n'):
if "protocol security negotiation" in line:
print "Not Windows!"
print "JUST TO test if this print works and it doesnt!!"
答
您需要重定向STDERR以检查打印到它的消息。地址:
subprocess.check_output(['sudo','xfreerdp','-p',password, ip], stderr=subprocess.STDOUT)
你运行的Python的版本? – Stuart
我正在使用Python 2.7 – Samanth
运行你的代码,但使用双引号打得不错 - 试试看。 – Stuart