我在redhat服务器上有一个tcpdump进程,它不断地从其NIC捕获流量。tcpdump每1MB启动一个新的捕获文件。捕获文件可以通过samba共享访问。
我正在编写一个python脚本,从共享中读取并处理pcap文件。
问题是tcpdump没有锁定当前正在写入的文件(肯定是tcpdump而不是samba服务器)。因此,当我的脚本开始处理文件时,我不知道该文件是否仍在被写入。此外,tcpdump可以突然关闭,因此我不希望将文件大小作为指示器。

最佳答案

os.path.getmtime呢?这可以用来获得最后一次修改的时间。
或者您可以将流从tcpdump管道传输到您自己的进程,该进程将数据传输到您自己的文件和缓冲区。
tee
一些脚本或类似的东西:

import fileinput
import sys
from tempfile import SpooledTemporaryFile
s = SpooledTemporaryFile(max_size=1024, prefix='saves_', dir='/some/dir')
for line in fileinput.input(sys.argv[1:]):
    # write to spooled buffer
    s.write(line)
    # tee back to stdout
    sys.stdout.write(line)

tcpdump | python some_script.py创建缓冲区。
SpooledTemporaryFile可以从fileinput.input读取,也可以获取文件列表,如:
stdin。。。或者
python some_script.py /some/file.input.txt
tcpdump | python some_script.py用于将文件作为列表获取(如果已列出)。

关于python - 使用脚本收听tcpdump输出pcaps,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43617155/

10-12 20:33