Python запускает и останавливает команду tcpdump в заданные эпохи - PullRequest
0 голосов
/ 25 октября 2018

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.
...