Как запустить и уничтожить tcpdump в рамках сценария?

Почему я не могу прервать (т.е. kill -2, нет kill -9) tcpdump как показано в этом сценарии? Выполнения сценария, но tcpdump не завершается и продолжает работать в командной строке, даже после печати части ее вывода выхода.

(Примечание: этот сценарий требует sudo из-за tcpdump и kill).

#!/bin/bash  

#start a process in the background (it happens to be a TCP HTTP sniffer on  the loopback interface, for my apache server):   

tcpdump -i lo -w dump.pcap 'port 80' &  

#.....other commands that send packets to tcpdump.....

#now interrupt the process.  get its PID:  
pid=$(ps -e | pgrep tcpdump)  
echo $pid  

#interrupt it:  
kill -2 $pid
2
задан 14 December 2017 в 22:59

2 ответа

Я нашел часть ответа на этом сообщении Переполнения стека .

подводя итоги, tcpdump буферизовал его вывод прежде, чем записать в выходной файл, и это вызвало проблемы, когда сценарий попытался прервать его. При добавлении -U ("сброс") опция к tcpdump фиксирует это.

Также необходимый были sleep команда сразу после издания tcpdump, чтобы позволить этому инициализировать, и также прежде, чем уничтожить его, позволить ему писать в файл:

#!/bin/bash  

#start a process in the background (it happens to be a TCP HTTP sniffer on  the loopback interface, for my apache server):   

tcpdump -U -i lo -w dump.pcap 'port 80' &   
sleep 5

#.....other commands that send packets to tcpdump.....

#now interrupt the process.  get its PID:  
pid=$(ps -e | pgrep tcpdump)  
echo $pid  

#interrupt it:  
sleep 5
kill -2 $pid

Для ссылки, от man tcpdump, под -U опция:

If  the -w option is specified, make the saved raw packet output 
``packet-buffered''; i.e., as each packet is saved,
it will be written to the output file, rather than being written only
 when the output buffer fills.

После этого сценарий хорошо работал.

1
ответ дан 3 December 2019 в 06:17

Можно ввести команду ниже:

killall tcpdump

Это релевантно, если Вы имели непрерывное выполнение tcpdump и хотели закончить тот процесс. Ничто иное не затронуто.

-3
ответ дан 3 December 2019 в 06:17

Другие вопросы по тегам:

Похожие вопросы: