여러 IP 주소를 동시에 ping하는 방법은 무엇입니까?

여러 IP 주소를 동시에 ping하는 방법은 무엇입니까?

for여러 서버 에서 Bash 루프를 실행하는 방법을 알고 있습니다 . 한 번에 하나씩 서버 목록 ping에 Bash 스크립트를 작성할 필요 없이 이 작업을 수행할 수 있는 Linux CLI 도구가 있습니까 ?ping

이 같은:

$ ping host1 host2 host3

노트:저는 특히 CentOS/Fedora를 찾고 있지만 다른 배포판에서도 작동한다면 그것도 좋을 것입니다.

답변1

조사한다면NMAP 프로젝트그 외에도 다른 도구가 포함되어 있음을 알 수 있습니다.nmap. 이러한 도구 중 하나는nping, 여기에는 다음 기능이 포함됩니다.

Nping은 생성된 패킷을 사용자에게 완전히 제어할 수 있는 매우 유연하고 강력한 명령줄 인터페이스를 제공합니다. Nping의 기능은 다음과 같습니다.

  • TCP, UDP, ICMP 및 ARP 패킷 생성을 사용자 정의합니다.
  • 여러 대상 호스트 사양을 지원합니다.
  • 다중 대상 포트 사양을 지원합니다.
  • ...

nping실행을 위해 표준 EPEL 저장소에 위치합니다.

$ repoquery -qlf nmap.x86_64 | grep nping
/usr/bin/nping
/usr/share/man/man1/nping.1.gz

용법

nping여러 서버를 ping하려면 사용하려는 이름/IP와 프로토콜만 알려주면 됩니다 . 기존 CLI의 기능을 모방하려고 하므로 pingICMP를 사용하겠습니다.

$ sudo nping -c 2 --icmp scanme.nmap.org google.com

Starting Nping 0.7.70 ( https://nmap.org/nping ) at 2019-06-14 13:43 EDT
SENT (0.0088s) ICMP [10.3.144.95 > 45.33.32.156 Echo request (type=8/code=0) id=42074 seq=1] IP [ttl=64 id=57921 iplen=28 ]
RCVD (0.0950s) ICMP [45.33.32.156 > 10.3.144.95 Echo reply (type=0/code=0) id=42074 seq=1] IP [ttl=46 id=24195 iplen=28 ]
SENT (1.0091s) ICMP [10.3.144.95 > 45.33.32.156 Echo request (type=8/code=0) id=42074 seq=2] IP [ttl=64 id=57921 iplen=28 ]
SENT (2.0105s) ICMP [10.3.144.95 > 45.33.32.156 Echo request (type=8/code=0) id=42074 seq=2] IP [ttl=64 id=57921 iplen=28 ]
RCVD (2.0107s) ICMP [45.33.32.156 > 10.3.144.95 Echo reply (type=0/code=0) id=42074 seq=2] IP [ttl=46 id=24465 iplen=28 ]
SENT (3.0138s) ICMP [10.3.144.95 > 64.233.177.100 Echo request (type=8/code=0) id=49169 seq=2] IP [ttl=64 id=57921 iplen=28 ]

Statistics for host scanme.nmap.org (45.33.32.156):
 |  Probes Sent: 2 | Rcvd: 2 | Lost: 0  (0.00%)
 |_ Max rtt: 86.053ms | Min rtt: 0.188ms | Avg rtt: 43.120ms
Statistics for host google.com (64.233.177.100):
 |  Probes Sent: 2 | Rcvd: 0 | Lost: 2  (100.00%)
 |_ Max rtt: N/A | Min rtt: N/A | Avg rtt: N/A
Raw packets sent: 4 (112B) | Rcvd: 2 (108B) | Lost: 2 (50.00%)
Nping done: 2 IP addresses pinged in 3.01 seconds

이 도구에서 발견한 유일한 단점은 ICMP 모드를 사용하려면 루트 권한이 필요하다는 것입니다.

$ nping -c 2 --icmp scanme.nmap.org google.com
Mode ICMP requires root privileges.

답변2

평평한동일한 이름의 Fedora 패키지에 위치하며 여러 호스트 또는 IP 주소 집합을 허용합니다.

$ fping -a -A -c 1 hosta hostb
192.168.0.20 : xmt/rcv/%loss = 1/1/0%, min/avg/max = 0.64/0.64/0.64
192.168.1.3  : xmt/rcv/%loss = 1/1/0%, min/avg/max = 0.50/0.50/0.50

fping은 ping 패킷을 보내고 라운드 로빈 방식으로 다음 대상으로 이동합니다. 대상이 응답하면 기록되어 목록에서 제거됩니다.

답변3

나는 사용하는 것이 좋습니다GNU 병렬

parallel -u ping ::: host1 host2 host3

출력은 인터리브됩니다.

답변4

나는 정확히 알고 있다아니요당신이 요구하는 것은 이 작업을 수행하기 위한 bash 스크립트입니다.

#!/bin/bash

for host; do
    ping -c5 "$host" 2>&1 | tail -3 &
done

wait

그러면 엔드포인트를 명령줄 인수로 사용하고 백그라운드 프로세스로 각 엔드포인트에 5개의 ping을 보낸 다음 종료하기 전에 모든 엔드포인트가 완료될 때까지 기다립니다. 성공률과 대기 시간에 대한 유용한 통계가 포함된 ping 출력의 마지막 세 줄을 인쇄합니다.

관련 정보