python - 尝试从check_output接收输出时出错

时间:2017-08-05 14:32:49

标签: python shell subprocess sniffing

我的代码应该跟踪一个用scapy嗅探的数据包并检查发送/接收数据包的程序,放入" Unknown"如果没有找到该程序

代码:

source_software = check_output(["netstat", "-nb"], shell = True).decode()
source_software = source_software[source_software.find(str(packet_dictionary["Port"])) : ]
source_software = source_software[source_software.find("\n") + 2 : source_software.find("]")]
if "Can not" not in source_software and len(source_software) > MINIMUM_LENGTH:
    packet_dictionary["Software"] = source_software
else:
    packet_dictionary["Software"] = "Unknown"

错误:

File "Client.py", line 44, in add_to_list
source_software = check_output(["netstat", "-nb"], shell = True).decode()
File "C:\Python36\lib\subprocess.py", line 336, in check_output
**kwargs).stdout
File "C:\Python36\lib\subprocess.py", line 418, in run
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['netstat', '-nb']' returned non-zero 
exit status 1.

2 个答案:

答案 0 :(得分:0)

正如您在异常的底线所看到的,问题是:

Command '['netstat', '-nb']' returned non-zero exit status 1.

...这意味着它不是关于check_output本身,而只是报告您尝试使用它运行的命令,失败并退出代码1。

您可能希望在shell中运行该命令并检查它是否按预期工作。

答案 1 :(得分:0)

可能是python没有运行netstat或其他任何权限的权限,但您可以使用以下命令对其进行调试

source_software = check_output("netstat -nb;  exit 0", stderr=subprocess.STDOUT, shell=True).decode()
print source_software