2014-03-13 90 views
2

我想從我的python腳本執行netcat命令,所以我使用'subprocess.Popen',但問題是這個命令的輸出直接打印在可能shell控制檯中,我想o讓他進入一個變量,所以我可以在打印之前做一些修改。在Python中捕獲netcat shell命令輸出

res = subprocess.Popen("nc -v 192.168.1.1 25", stdout=subprocess.PIPE, stderr=None, shell=True) 
#output = res.communicate() 
#output = str(output) 
#print output 
+0

您是否嘗試過重定向'stderr'?除非要提示你輸入密碼,否則'nc'不太可能直接打印到終端。 – jfs

+0

這是一個[代碼示例,顯示如何捕獲輸出,即使它被重定向到終端(在stdout/stderr流之外)]( http://stackoverflow.com/a/22253472/4279)。 – jfs

+0

我確認,當我使用ls -l代替nc時,它可以工作,因此即使您不使用打印命令,nc命令也會顯示結果,有什麼解決方法? – user3383192

回答

0

我用它來捕獲系統命令的輸出,注意它只會得到最後一行。根據需要修改最後一行以獲得更多:

def GetOutput(command): 
    lastline = os.popen(command).readlines() 
    result = lastline[0].rstrip() 
    return result