ping 명령으로 짧은 시간 초과를 설정하는 방법은 무엇입니까? 각 호스트의 ping 상태 만

LAN의 모든 호스트를 나열하는 스크립트 (약 20 개가 있음)를 작성하고 각 호스트 옆에 핑 상태를 기록하려고합니다. DHCP 임대 파일이 있으므로 모든 IP (예 : 10.0.0.1, 10.0.0.2 등)가 있으므로 각 호스트의 ping 상태 만 있으면됩니다.

따라서 내 스크립트는 각 호스트마다 단일 핑을 시작합니다.

ping -c 1 10.0.0.1

불행히도 호스트가 오프라인 상태 인 경우 핑 시간이 초과되는 데 시간이 오래 걸립니다. 나는 선택 man ping, 제한 시간 지연을 설정하는 두 가지 옵션이있을 것 같다 : -w deadline-W timeout. 나는 후자에 관심이 있다고 생각합니다.

그래서 나는 이것을 시도했다 :

ping -c 1 -W 1 10.0.0.1

그러나 오프라인 호스트 당 1 초를 기다리는 것이 여전히 너무 깁니다. 나는 그것을 1 초 미만으로 설정하려고 시도했지만 매개 변수를 전혀 고려하지 않는 것 같습니다.

ping -c 1 -W 0.1 10.0.0.1  # timeout option is ignored, apparently

시간 초과를 더 낮은 값으로 설정하는 방법이 있습니까? 그렇지 않다면 대안이 있습니까?

편집하다

  • OS는 데비안 레니입니다.
  • 핑하려는 호스트는 실제로 액세스 포인트입니다. 배포 및 교체가 간단하도록 사용자와 동일한 VLAN 및 서브넷에 있습니다. 이것이 모든 서브넷을 스캔하고 싶지 않은 이유 ping -b입니다 (예를 들어).

편집 # 2

나는 fping해결책을 받아 들였다 (다른 모든 답변에 감사드립니다). 이 명령은 내가 찾던 것을 정확하게 수행합니다.

fping -c1 -t500 10.0.0.1 10.0.0.2 10.0.0.3 10.0.0.4

이 명령은 완료하는 데 최대 500ms가 걸리며 한 번에 모든 호스트의 핑 상태를 제공합니다.

10.0.0.1 : [0], 84 bytes, 5.71 ms (5.71 avg, 0% loss)
10.0.0.2 : [0], 84 bytes, 7.95 ms (7.95 avg, 0% loss)
10.0.0.3 : [0], 84 bytes, 16.1 ms (16.1 avg, 0% loss)
10.0.0.4 : [0], 84 bytes, 48.0 ms (48.0 avg, 0% loss)

10.0.0.1 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 5.71/5.71/5.71
10.0.0.2 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 7.95/7.95/7.95
10.0.0.3 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 16.1/16.1/16.1
10.0.0.4 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 48.0/48.0/48.0

데비안 레니에서 설치는 간단합니다 :

aptitude update
aptitude install fping


답변

fping 은 사용 중인 스탁 핑보다 더 나은 도구 일 수 있습니다. 어떤 OS를 사용하고 있습니까?

  • “fping은 명령 행에 여러 개의 대상을 지정하거나 ping 할 대상 목록을 포함하는 파일을 지정할 수 있다는 점에서 ping과 다릅니다.”
  • “시간이 초과되거나 응답 할 때까지 하나의 대상으로 전송하는 대신 fping은 핑 패킷을 전송하고 라운드 로빈 방식으로 다음 대상으로 이동합니다.”
  • “ping과는 달리 fping은 스크립트에서 사용되도록 만들어 졌으므로 출력을 구문 분석하기 쉽게 설계되었습니다.”

답변

와 관련된 솔루션을 찾는 사람들에게는 스위치를 ping사용하십시오 -i.

ping -i 0.2 www.google.com

또는 0.1을 사용하려면 루트로 실행해야합니다.

sudo ping -i 0.1 www.google.com

추가 유틸리티를 다운로드 할 필요가 없습니다.


답변

timeoutUbuntu / Debian 의 명령으로 짧은 시간 초과를 설정할 수 있습니다 .

timeout 0.2 ping -c1 fqdn || { do_work }

답변

이 작업에 nmap을 사용하고 있습니다.

nmap -sP --max-retries=1 --host-timeout=1500ms 10.0.0.1

이에 대한 자세한 내용은 nmap 설명서 를 참조하십시오.


답변

모든 호스트가 물리적 LAN에있는 경우 arp ping 도구를 살펴볼 수도 있습니다. 동일한 작업을 수행하지만 레이어 2 arp 패킷을 사용하여 ‘ping’을 수행합니다. Arpping과 icmp ping의 조합 또는 실제로는 tcp ping을 사용하여 오류가 무엇인지 수집 할 수 있습니다. EXample은 tcp 스택 크래시입니다. 요즘에는 드물지만 머신이 ping에 응답하지 않기 때문에 머신 tcp 스택이 충돌했는지 알 수 있지만 arp (호스트의 다른 코드 조각)에 응답합니다. .

Arpping, tcpping 및 icmp ping의 조합을 사용하면 시스템의 서비스가 충돌했는지, tcp 스택이 충돌했는지 또는 시스템이 완전히 잠겨 있는지 확인할 수 있습니다. 이더넷 스위치를 관리 한 경우 실제 링크 데이터를 얻을 수 있으며 시스템이 실제로 켜져 있는지 또는 실제로 플러그가 뽑혔는지 알 수 있습니다. 우리는 머신들 (공공 실의 클라이언트들)이 꺼질 상황이 있었고, 그 데이터를 수집하고 랜 패킷에 대한 웨이크를 모아서 머신의 전원을 켰습니다. 🙂

네트워크 사용량이 많은 경우 어떤 솔루션을 구축하든 어떤 종류의 qos 구현을 고려하여 모니터링 패킷이 네트워크에서 우선 순위를 가지므로 네트워크 혼잡으로 인해 측정 패킷이 손실되면 잘못된 경보가 발생할 수 있습니다. 패킷을 모니터링하기 위해 qos를 사용하는 경우 네트워크 활용에 대한 데이터 수집에 대해 고려해야합니다.

따라서 모니터링 솔루션을 원하는만큼 복잡하거나 쉽게 만들 수 있습니다. 우리는 가장 기본적인 모니터링 시스템조차 올바른 방향으로 나아가는 단계라는 것을 알았습니다. 최소한 일부 관리자는 머신을 감시하고 있습니다 :-).

행운을 빕니다!


답변

@ jordon-bedwell은 큰 제안을합니다.

@ laszlo-valko https://stackoverflow.com/questions/20359487/why-does-ping-not-timeout-in-linux 는 ip 주소가 결정된 후에 만 ​​ping 시간 초과가 시작된다고 설명합니다. dns를 사용하고 워크 스테이션이 오프라인 인 경우 ping은 IP 주소를 판별 할 수 없으므로 false를 리턴하기 전에 대략 기본 20+ 초 동안 대기하는 것으로 보입니다.

Linux ‘timeout’도구를 사용하면 도메인 이름으로 ping을 실행할 때 더 많은 제어 기능을 제공합니다.

고마워


답변

Windows와 Debian에서 모두 -w 스위치를 사용하십시오 .

지정된 시간 (초)보다 적은 시간 내에 응답한다고 가정하면 컴퓨터가 전혀 응답하는지 확인하는 빠른 방법입니다.

ping -w 1 192.168.80.105

PING 192.168.80.105 (192.168.80.105) 56(84) bytes of data.

--- 192.168.80.105 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 999ms