我想從我的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
您是否嘗試過重定向'stderr'?除非要提示你輸入密碼,否則'nc'不太可能直接打印到終端。 – jfs
這是一個[代碼示例,顯示如何捕獲輸出,即使它被重定向到終端(在stdout/stderr流之外)]( http://stackoverflow.com/a/22253472/4279)。 – jfs
我確認,當我使用ls -l代替nc時,它可以工作,因此即使您不使用打印命令,nc命令也會顯示結果,有什麼解決方法? – user3383192