tcpdump генерирует pcap каждую 1 минуту в течение двух заданных эпох, например, начинает генерировать пакеты с сегодняшней полуночи до завтрашней полуночи.Это происходит, когда скрипт Python запускает его в запланированное время.И я надеюсь, что он работает в фоновом режиме, как tcpdump ... &
Тем не менее, sudo python3 capture.py
производит: pktap_filter_packet: pcap_add_if_info(lo0, 0) failed: pcap_add_if_info: pcap_compile_nopcap() failed.
Другая проблема, я надеюсь, в python он сохраняет p.pid
, а в другую запланированную эпоху он убивает pid
.`
import os, time
from apscheduler.schedulers.background import BackgroundScheduler
from datetime import datetime, timedelta
import subprocess
import shlex
def start_catch():
shell_cmd = 'tcpdump -i any -G 60 -w packets-%Y-%m-%d_%H.%M.%S.pcap &' # this & causes problem but without it the tcpdump blocks the progress
cmd = shlex.split(shell_cmd)
p = subprocess.Popen(cmd, shell=False)
if p.returncode == 0:
print('Subprogram success')
else:
print('Subprogram failed')
scheduler = BackgroundScheduler()
dd = datetime.now() + timedelta(seconds=10)
job = scheduler.add_job(start_catch, 'date',run_date=dd, args=[])
try:
scheduler.start()
except Exception as e:
print(e)
scheduler.shutdown()
# continue to do other things.