来自Unix&Linux Stack Exchange的
This question was migrated,因为可以在Stack Overflow上进行回答。
Migrated 12个月前。
我正在尝试将
但是,当脚本尝试运行此行时出现错误:
并收到一个错误
我在Ubuntu 18.04上并在python 2.7下运行。
Migrated 12个月前。
我正在尝试将
xz
的输出传递给自定义python脚本:xz -cd file.pcap.xz | myscripy.py
但是,当脚本尝试运行此行时出现错误:
#!/usr/bin/env python2.7
from __future__ import print_function
import pcap
import io
STDIN_ALIAS = '/proc/self/fd/0'
pcap.pcap(io.open(STDIN_ALIAS, 'r'))
并收到一个错误
pcap.pcap(io.open(STDIN_ALIAS, 'r'))
File "pcap.pyx", line 196, in pcap.pcap.__init__
TypeError: expected string or Unicode object, _io.TextIOWrapper found
我在Ubuntu 18.04上并在python 2.7下运行。
最佳答案
您不能使用Python将数据包从文件传递到pcap.pcap()
。您使用的pypcap
library是pcap_open_offline()
和pcap_create()
C函数的一个瘦包装,并且不提供传递Python文件对象的功能。该包装器仅接受文件名或网络接口名称,其他均不接受。pcap_open_offline()
函数确实接受-
作为stdin
的别名,因此直接将其传递给:
import pcap
sniffer = pcap.pcap('-')
关于python - Python:将pcap文件传递到stdout会出错,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53986737/