gpt4 book ai didi

python - 如何在变量中保存 tshark 统计数据

转载 作者:行者123 更新时间:2023-12-01 05:50:38 26 4
gpt4 key购买 nike

我想将 tshark 命令的输出保存在变量中。

例如,如果我运行:

tshark -r capture.pcap -qz io,stat,0

我会得到:

Time            |frames|  bytes

00.000-060.000 742 51660

我想将总帧数保存在脚本的变量中以供进一步计算。

最佳答案

在我的系统上,tshark 的输出格式与您在问题中显示的格式不同。为了使解析更加稳健,我更改了命令行:

#!/usr/bin/env python
import shlex
from itertools import dropwhile
from subprocess import check_output as qx

# get tshark output
command = "tshark -r capture.pcap -qz 'io,stat,0,COUNT(frame)frame'"
lines = qx(shlex.split(command)).splitlines()

# parse output
lines = dropwhile(lambda line: not line.rstrip().endswith("COUNT"), lines)
next(lines) # skip header
frames_count = int(next(lines).split()[1])
print(frames_count)

您无需调用 tshark 即可从 pcap 文件获取统计信息。您可以使用可以解析 pcap 文件的 Python 库,例如使用 scapy :

#!/usr/bin/env python
from scapy.all import rdpcap

a = rdpcap('capture.pcap')
frames_count = len(a)
print(frames_count)

要使用 scapy 获取 tshark -r capture.pcap -qz 'io,stat,0,ip.src==192.168.230.146' 命令的计数:

#!/usr/bin/env python
from scapy.all import IP, sniff

a = sniff(offline='capture.pcap',
lfilter=lambda p: IP in p and p[IP].src == '192.168.230.146')
count = len(a)
print(count)

关于python - 如何在变量中保存 tshark 统计数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14451599/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com