Прежде всего, извинения за мой плохой английский.
Я собираю пакеты среди искрового кластера. Когда задание запускается, оно запускает программу python на ведомых устройствах, которая использует sniff(count=0)
для получения пакетов, а затем использует функцию wrpcap("/home/demo.pcap",dpkt)
, чтобы обернуть их в файл pcap для дальнейшего использования. Но в этом случае анализатор будет работать бесконечно , Я не знаю, как заставить его остановиться и перейти к следующей строке.
Мой план состоял в том, чтобы использовать python dpkt_writer.py 0 &
для запуска в фоновом режиме, а затем сделать что-нибудь, чтобы остановить его и получить demo.pcap. Но сначала, когда счет равен 0, sniff(count=0)
не остановится, если вы не используете CTRL+C
вручную, и я не знаю, как это сделать, когда он запускается сзади. Все, что я могу сделать, это переписать программу, чтобы обернуть pcap каждые 20 пакетов ,, но я запутаюсь из-за количества файлов.
# original
import sys
import os
from scapy.sendrecv import sniff
from scapy.utils import wrpcap
cs = int(sys.argv[1])
dpkt = sniff(count = cs)
wrpcap("/home/demo.pcap", dpkt)
# modified
import sys
import os
from scapy.sendrecv import sniff
from scapy.utils import wrpcap
i=1
while(True):
print("starting "+bytes(i))
dpkt = sniff(count = 10)
print("ending "+bytes(i))
wrpcap("/home/demo"+bytes(i)+".pcap",dpkt)
i=i+1
Как мне это сделать?