Python 从txt文件中提取tcpdump时间戳

Python 从txt文件中提取tcpdump时间戳,python,parsing,tcpdump,Python,Parsing,Tcpdump,我试图使用python从tcpdump的输出计算吞吐量。到目前为止,我从python调用了tcpdump,并设法将输出写入文本文件。样本输出: 01:06:23.649464 0us IP(tos 0x0,ttl 128,id 63533,偏移量0,标志[none],协议UDP(17),长度72)251.146.199.137.1066>156.96.135.220.62827:UDP,长度44 01:06:23.920316 0us IP(tos 0x0,ttl 1,id 10354,偏移量0

我试图使用python从tcpdump的输出计算吞吐量。到目前为止,我从python调用了tcpdump,并设法将输出写入文本文件。样本输出:

01:06:23.649464 0us IP(tos 0x0,ttl 128,id 63533,偏移量0,标志[none],协议UDP(17),长度72)251.146.199.137.1066>156.96.135.220.62827:UDP,长度44

01:06:23.920316 0us IP(tos 0x0,ttl 1,id 10354,偏移量0,标志[none],原始IGMP(2),长度32,选项(RA))251.146.198.120>fm-dyn-140-0-193-221.fast.net.id:[|IGMP]

然而,我被困在下一部分。提取时间和长度(第一个)并计算吞吐量。我是python新手,对正则表达式不太清楚。另外,由于时间戳包括微秒,有没有简单的方法来计算吞吐量


提前感谢。

忘记regex,您可以使用
datetime
模块

使用
datetime

>>> from datetime import datetime
>>> lines = ['01:06:23.649464 0us IP (tos 0x0, ttl 128, id 63533, offset 0, flags [none], proto UDP (17), length 72) 251.146.199.137.1066 > 156.96.135.220.62827: UDP, length 44', '01:06:23.920316 0us IP (tos 0x0, ttl 1, id 10354, offset 0, flags [none], proto IGMP (2), length 32, options (RA)) 251.146.198.120 > fm-dyn-140-0-193-221.fast.net.id: [|igmp]']
>>> times = [datetime.strptime(line[:15], '%H:%M:%S.%f') for line in lines]
吞吐量可以直接计算,但您需要使用
strtime
from
datetime
进行计算

>>> times[1] - times[0]
datetime.timedelta(0, 0, 270852)

可能重复的Nope。在本例中,他们读取tcpdump的文本输出;在另一个问题中,他们似乎正在读取pcap二进制文件,并且,使用正确的Python包读取pcap文件,获取时间戳非常容易。从文本中提取它需要做更多的工作。为了可靠地解析输出,您需要使用文本输出没有的文档格式;我刚刚更新了tcpdump手册页来记录时间戳格式。(其余部分没有文档记录,更改更频繁。)