Всем привет. В своё время долго ржал над виндовым ping-ом, который сам себе отвечал, что «заданный узел недоступен», считая эти «ответы» как успешные, и выдавая статус успешной операции по итогу. Ну ладно, то винда. Но вот теперь обнаруживаю, что nping ушёл совсем недалеко:
# nping --interface eth0 --icmp --dest-mac 00:21:91:98:6A:75 -c 3 --delay 0.2 A.B.C.D
Starting Nping 0.7.60 ( https://nmap.org/nping ) at 2018-12-27 13:18 EET
SENT (0.8063s) ICMP [192.168.1.59 > A.B.C.D Echo request (type=8/code=0) id=12718 seq=1] IP [ttl=64 id=60290 iplen=28 ]
SENT (1.0068s) ICMP [192.168.1.59 > A.B.C.D Echo request (type=8/code=0) id=12718 seq=2] IP [ttl=64 id=60290 iplen=28 ]
RCVD (1.0081s) ICMP [192.168.1.1 > 192.168.1.59 Network A.B.C.D unreachable (type=3/code=0) ] IP [ttl=64 id=1646 iplen=56 ]
RCVD (1.0081s) ICMP [192.168.1.1 > 192.168.1.59 Network A.B.C.D unreachable (type=3/code=0) ] IP [ttl=64 id=1647 iplen=56 ]
SENT (1.2074s) ICMP [192.168.1.59 > A.B.C.D Echo request (type=8/code=0) id=12718 seq=3] IP [ttl=64 id=60290 iplen=28 ]
RCVD (1.2173s) ICMP [192.168.1.1 > 192.168.1.59 Network A.B.C.D unreachable (type=3/code=0) ] IP [ttl=64 id=1648 iplen=56 ]
Max rtt: 9.828ms | Min rtt: 1.287ms | Avg rtt: 4.219ms
Raw packets sent: 3 (126B) | Rcvd: 3 (168B) | Lost: 0 (0.00%)
Nping done: 1 IP address pinged in 1.22 seconds
Я его, на самом деле, использую с опцией -q, и анализирую только суммарный ответ: сколько пакетов потеряно. Какой-нибудь более вменяемый выход есть, кроме как анализировать весь вывод целиком и считать строчки с успешным ответом именно от целевого хоста?
Какой-нибудь другой ping подойдёт, только если у него есть аналог опции "--dest-mac", но я такого больше не знаю.
PS Я даже не говорю о том, что nping всегда возвращает success, и узнать результат пинга можно, только проанализировав его stdout. Это, конечно, жесть, но об этом, хотя бы, в документации написано.