如何在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!!" 
+0

你运行的Python的版本? – Stuart

+0

我正在使用Python 2.7 – Samanth

+0

运行你的代码,但使用双引号打得不错 - 试试看。 – Stuart

尝试使用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)