2017-06-21 65 views
1

我寫了一個小的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

回答

2

嘗試使用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!!" 
1

您需要重定向STDERR以檢查打印到它的消息。地址:

subprocess.check_output(['sudo','xfreerdp','-p',password, ip], stderr=subprocess.STDOUT)