Иногда мой DSL маршрутизатор терпит неудачу в этом странным образом:
[email protected]:~$ sudo ping 8.8.8.8 -I eth9
[sudo] password for luis:
PING 8.8.8.8 (8.8.8.8) from 192.168.3.100 eth9: 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=47 time=69.3 ms
ping: sendmsg: Operation not permitted
64 bytes from 8.8.8.8: icmp_seq=3 ttl=47 time=68.0 ms
ping: sendmsg: Operation not permitted
64 bytes from 8.8.8.8: icmp_seq=5 ttl=47 time=68.9 ms
64 bytes from 8.8.8.8: icmp_seq=6 ttl=47 time=67.2 ms
ping: sendmsg: Operation not permitted
64 bytes from 8.8.8.8: icmp_seq=8 ttl=47 time=67.2 ms
^C
--- 8.8.8.8 ping statistics ---
8 packets transmitted, 5 received, 37% packet loss, time 7012ms
rtt min/avg/max/mdev = 67.254/68.183/69.391/0.906 ms
[email protected]:~$ echo $?
0
Как можно видеть, код ошибки $?
является 0
. Поэтому я не могу просто определить, не сработала ли команда, так как на выходе получается без ошибок для любого скрипта.
Что такое надлежащим образом определить, что произошла потеря пакетов?
Нужно ли разобрать выход с grep
или есть какой-нибудь более простой способ?
Хорошая информация, но обратите внимание, что она специфична для _GNU_ 'ping' (Linux); BSD 'ping', также используемый в OS X, имеет разные варианты и поведение. – mklement0
@ mklement0 хорошая точка, исправлено – pmod