Я использую следующую команду для отправки пингующих IP-адресов в сценарий:
sudo tcpdump -ne -l -i eth0 icmp and icmp[icmptype]=icmp-echo \
| cut -d " " -f 10 | xargs -L2 ./pong.sh
К сожалению, это дает мне:
tcpdump: Unable to write output: Broken pipe
Чтобы проанализировать мои команды:
Вывод пинга из трафика:
sudo tcpdump -ne -l -i eth0 icmp and icmp[icmptype]=icmp-echo
Выход:
11:55:58.812177 IP xxxxxxx > 127.0.0.1: ICMP echo request, id 50776, seq 761, length 64
Это получит IP-адреса из вывода tcpdump:
cut -d " " -f 10 # output: 127.0.0.1
Получить вывод для скрипта:
xargs -L2 ./pong.sh
Это будет имитировать следующую команду:
./pong.sh 127.0.0.1
Странно то, что команды работают отдельно (самостоятельно) ...
Я пытался отладить его, но у меня нет опыта отладки каналов. Я проверил команды, но они кажутся нормальными.