Python 在使用 Scapy 创建空 pcap 文件时抑制警告

标签 python scapy suppress-warnings

我想创建一个空的 pcap 文件。我正在使用“Scapy”的 wrpcap 模块。但是 wrpcap 只接受 2 个参数:一个是 文件名,另一个是 数据包列表,例如:

wrpcap("my.pcap",my_pkt_list)

因为我想把它设为空,而且我没有数据包列表,所以我正在向 pcap 文件写入一个空字符串。它正在创建文件,但也会给出警告和错误,因为字符串与数据包类型不匹配。

WARNING: PcapWriter: unknown LL type for str. Using type 1 (Ethernet)
Traceback (most recent call last):
  File "test.py", line 35, in <module>
    wrpcap("pcap/FU.pcap","")
  File "/usr/lib/python2.7/site-packages/scapy/utils.py", line 466, in wrpcap
    PcapWriter(filename, *args, **kargs).write(pkt)
  File "/usr/lib/python2.7/site-packages/scapy/utils.py", line 646, in write
    self._write_packet(pkt)
  File "/usr/lib/python2.7/site-packages/scapy/utils.py", line 688, in _write_packet
    sec = int(packet.time)
AttributeError: 'str' object has no attribute 'time'

目前,我可以使用 try and except 来抑制错误,但无法抑制警告。

代码

from scapy.all import *
try:
    wrpcap("my.pcap","")
except:
    pass

警告仍然存在:

WARNING: PcapWriter: unknown LL type for str. Using type 1 (Ethernet)

如何从 python 代码中抑制它?

最佳答案

Python 在标准库中有一个内置方法来抑制警告:

import warnings
warnings.simplefilter("ignore", Warning)

您可以阅读有关警告库的更多信息 in the docs .

编辑

看起来 scapy 使用 warnings 库来生成它。相反它logs them to a logger名为 scapy.runtime,级别为 warning。显然有一些默认的日志记录配置将其回显到 stdout。您可以为 scapy.runtime 添加自己的日志处理程序来抑制它们。

关于Python 在使用 Scapy 创建空 pcap 文件时抑制警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28736188/

相关文章:

Python .sort() 对集合列表返回 None

python - 如何摆脱警告 "DeprecationWarning generator ' ngrams 引发的 StopIteration"

Python pandas : Multi-column filter using ~df. type.isin 和 !=

c++11 - C++11 何时给出有关运算符优先级的警告?

c# - 在 VS Code 中禁用特定的编译器警告

python - python 中的 selenium webdriver。有第三方库吗?

python - Scapy - 如何剖析以太网拖车字段

python - 400 使用 TLS 包装器重放捕获的 HTTP/2 请求数据包时来自某些网站的错误请求

python - 尝试运行 scapy shell 时出错

matlab - Matlab-如何捕获cp2tform函数发布的警告