연결이 끊어진 경우 "ping -W" 플래그가 시간 초과되지 않는 이유는 무엇입니까?

연결이 끊어진 경우 "ping -W" 플래그가 시간 초과되지 않는 이유는 무엇입니까?

-WDebian Buster에서는 플래그에 대한 설명으로 판단하면 ping다음과 같은 것을 사용할 수 있을 것 같습니다:

ping -i 10 -W 5 8.8.8.8

인터넷 연결을 지속적으로 모니터링하십시오. 연결이 끊어지면 각 핑(10초 간격) 후 5초 동안 ping응답이 보고되지 않을 것으로 예상됩니다. 대신 연결이 복원될 때까지 출력이 일시 중지되고(최소 60초, 무기한 가능) 해당 일시 중지 중에 전송된 모든 핑이 완료되고 긴 퐁 시간만 표시됩니다. 따라서 출력은 다음과 같습니다.

64 bytes from 8.8.8.8: icmp_seq=36 ttl=117 time=11.705 ms
64 bytes from 8.8.8.8: icmp_seq=37 ttl=117 time=11.963 ms
64 bytes from 8.8.8.8: icmp_seq=38 ttl=117 time=11.900 ms
64 bytes from 8.8.8.8: icmp_seq=39 ttl=117 time=11.288 ms   <-- connection interrupted after this line
64 bytes from 8.8.8.8: icmp_seq=40 ttl=117 time=65697 ms    <-- this line takes ~65s to appear   
64 bytes from 8.8.8.8: icmp_seq=41 ttl=117 time=55880 ms
64 bytes from 8.8.8.8: icmp_seq=42 ttl=117 time=45116 ms
64 bytes from 8.8.8.8: icmp_seq=43 ttl=117 time=35949 ms
64 bytes from 8.8.8.8: icmp_seq=44 ttl=117 time=25266 ms
64 bytes from 8.8.8.8: icmp_seq=45 ttl=117 time=15943 ms
64 bytes from 8.8.8.8: icmp_seq=46 ttl=117 time=5818 ms
64 bytes from 8.8.8.8: icmp_seq=47 ttl=117 time=11.578 ms    <--- connection restored before this ping
64 bytes from 8.8.8.8: icmp_seq=48 ttl=117 time=11.382 ms
64 bytes from 8.8.8.8: icmp_seq=49 ttl=117 time=11.624 ms
64 bytes from 8.8.8.8: icmp_seq=50 ttl=117 time=11.407 ms
64 bytes from 8.8.8.8: icmp_seq=51 ttl=117 time=11.864 ms
64 bytes from 8.8.8.8: icmp_seq=52 ttl=117 time=11.716 ms

내가 예상한 대로:

64 bytes from 8.8.8.8: icmp_seq=36 ttl=117 time=11.705 ms
64 bytes from 8.8.8.8: icmp_seq=37 ttl=117 time=11.963 ms
64 bytes from 8.8.8.8: icmp_seq=38 ttl=117 time=11.900 ms
64 bytes from 8.8.8.8: icmp_seq=39 ttl=117 time=11.288 ms   <-- connection interrupted after this line
ping is down: no route to host
ping is down: no route to host
ping is down: no route to host
ping is down: no route to host
ping is down: no route to host
ping is down: no route to host
ping is down: no route to host
64 bytes from 8.8.8.8: icmp_seq=47 ttl=117 time=11.578 ms    <--- connection restored before this ping
64 bytes from 8.8.8.8: icmp_seq=48 ttl=117 time=11.382 ms
64 bytes from 8.8.8.8: icmp_seq=49 ttl=117 time=11.624 ms
64 bytes from 8.8.8.8: icmp_seq=50 ttl=117 time=11.407 ms
64 bytes from 8.8.8.8: icmp_seq=51 ttl=117 time=11.864 ms
64 bytes from 8.8.8.8: icmp_seq=52 ttl=117 time=11.716 ms

이러한 질문을 바탕으로 명확한 대답이 없는 일반적인 질문은 다음과 같습니다.

따라서 두 가지 질문을 요약하면 다음과 같습니다.

  1. 시간 초과 후 ping에서 연결 실패를 보고하도록 하는 방법이 있습니까?
  2. -W(1)을 해결하지 못한다면 디자인의 목적은 무엇입니까?

답변1

대답:

  1. ping제가 아는 한 내장된 것은 아무것도 없습니다. 두 가지 솔루션이 있습니다.
    • 출력을 grep하거나 반환 플래그를 확인하고 유용한 출력을 에코하는 루프 에 단일 핑(예: ping -c1 -W 5 8.8.8.8) 을 래핑합니다. bash좋은 예는 다음과 같습니다.https://superuser.com/a/668124
    • -O플래그는 즉시 실패 메시지를 표시합니다. 그것과 아무 관련이 없고 -W관련된 시간 초과도 없으므로 정확히 동일하지는 않지만 적어도 연결 문제는 분명해야 합니다.
  2. -W별도로 지정하지 않는 한 -c패킷 수를 제한 할 목적은 없는 것 같습니다. -c지정된 경우 시간 초과가 전체가 아닌 핑당이라는 점을 제외하면 -W유사합니다 .-w

관련 정보