Python netstat无法与popen一起正常工作
使用Python运行此命令时Python netstat无法与popen一起正常工作,python,popen,netstat,Python,Popen,Netstat,使用Python运行此命令时 p = Popen(['netstat', '-atunp'], shell=True, stdout=PIPE, stderr=PIPE) stdout, stderr = p.communicate() print stdout 我得到了不同的输出。也就是说,如果我从命令行运行相同的命令,我可以看到IP地址和应用程序名,而使用Python则不能 要查看IP地址和应用程序名称,我还需要做些什么吗?我想我在没有-p标志的情况下运行了您的命令。此标志需要一个协议。这
p = Popen(['netstat', '-atunp'], shell=True, stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate()
print stdout
我得到了不同的输出。也就是说,如果我从命令行运行相同的命令,我可以看到IP地址和应用程序名,而使用Python则不能
要查看IP地址和应用程序名称,我还需要做些什么吗?我想我在没有
-p
标志的情况下运行了您的命令。此标志需要一个协议。这可能就是标准输出字符串为空的原因<另一方面,code>stderr会出现以下错误-
In [86]: stderr
Out[86]: 'netstat: option requires an argument -- p\nUsage:\tnetstat [-AaLlnW] [-f address_family | -p protocol]\n\tnetstat [-gilns] [-f address_family]\n\tnetstat -i | -I interface [-w wait] [-abdgRt]\n\tnetstat -s [-s] [-f address_family | -p protocol] [-w wait]\n\tnetstat -i | -I interface -s [-f address_family | -p protocol]\n\tnetstat -m [-m]\n\tnetstat -r [-Aaln] [-f address_family]\n\tnetstat -rs [-s]\n\n'
因此,像这样更新您的命令(删除shell=True
并添加协议作为参数)——
您能向我们展示您得到的输出吗?drop
shell=True
。请参见问题中的打印标准输出
。据我所知,问题可能与此类似,OP希望netstat输出像他在命令行上看到的那样进行修饰。基于新行进行拆分,得到与终端相同的输出。否。这是不对的stdout
是一个字符串(可能包含嵌入的换行符('\n'
字符))stdout.split('\n')
返回Python列表。您看到的输出是repr(The_list)
,这不是终端将显示的内容。同意这不是终端将显示的内容。我是在评论一部分,其中一个很好的值列表比视觉上混乱的字符串更有意义。@J.F.Sebastian更新了答案。你怎么认为?
In [87]: paste
p = Popen(['netstat', '-atunp', 'tcp'], stdout=PIPE, stderr=PIPE)
stdout, stderr = p.communicate()
print stdout
## -- End pasted text --
Active Internet connections (including servers)
Proto Recv-Q Send-Q Local Address Foreign Address (state)
tcp4 0 0 192.168.1.100.53076 198.252.206.140.80 ESTABLISHED
tcp4 0 0 192.168.1.100.53075 198.252.206.140.80 ESTABLISHED
tcp4 0 0 192.168.1.100.53004 216.58.220.3.443 ESTABLISHED
tcp4 0 0 192.168.1.100.52984 74.125.200.155.443 ESTABLISHED
tcp4 0 0 192.168.1.100.52954 198.252.206.149.443 ESTABLISHED
tcp4 0 0 192.168.1.100.52927 91.189.89.222.443 FIN_WAIT_1
tcp4 0 0 192.168.1.100.52925 173.194.120.144.443 ESTABLISHED
tcp4 0 0 192.168.1.100.52869 74.125.130.155.443 ESTABLISHED
tcp4 0 0 192.168.1.100.52863 74.125.68.139.443 ESTABLISHED
tcp4 0 0 192.168.1.100.52858 74.125.130.102.443 ESTABLISHED
tcp4 0 0 192.168.1.100.52851 74.125.68.93.443 ESTABLISHED
tcp4 0 0 192.168.1.100.52847 74.125.200.132.443 ESTABLISHED
tcp4 0 0 192.168.1.100.52814 216.58.216.163.443 ESTABLISHED
tcp4 0 0 192.168.1.100.52812 74.125.68.189.443 ESTABLISHED
tcp4 0 0 192.168.1.100.52794 74.125.130.17.443 ESTABLISHED
tcp4 0 0 192.168.1.100.52793 198.252.206.149.443 ESTABLISHED
tcp4 0 0 192.168.1.100.52761 74.125.68.138.443 ESTABLISHED
tcp4 0 0 192.168.1.100.52737 74.125.68.132.443 ESTABLISHED
tcp4 0 0 192.168.1.100.52577 17.172.232.205.443 ESTABLISHED
tcp4 0 0 192.168.1.100.52571 74.125.130.188.443 ESTABLISHED
tcp6 0 0 fd9a:f3a0:3346:7.4488 *.* LISTEN
tcp4 0 0 *.* *.* CLOSED
tcp4 0 0 127.0.0.1.631 *.* LISTEN
tcp6 0 0 ::1.631 *.* LISTEN