명령 프롬프트에서 여러 대상 동시에 핑하는 방법

명령 프롬프트에서 여러 대상 동시에 핑하는 개요

네트워크 관리자나 고급 사용자는 특정 네트워크 세그먼트에 속한 여러 장치의 응답 상태를 한 번에 확인해야 하는 경우가 많습니다. 단일 IP 주소에 대한 핑 테스트는 기본적인 진단 도구이지만, 여러 대상을 순차적으로 또는 동시에 점검해야 할 때는 명령 프롬프트의 기본 기능만으로는 한계가 있습니다. 이 문제를 해결하기 위해 Windows 환경에서는 FOR 반복문과 파이프라인을 조합하여 여러 IP 주소나 호스트 이름을 동시에 핑하는 방법이 널리 사용됩니다. 또한 PowerShell이나 서드파티 도구를 활용하면 더 효율적인 병렬 처리가 가능합니다. 이 글에서는 명령 프롬프트에서 여러 대상을 동시에 핑하는 구체적인 명령어와 함께 필터링, 결과 저장, 그리고 각 접근법의 장단점을 자세히 살펴보겠습니다. 네트워크 문제 해결 시간을 단축하고 대규모 장치 모니터링에 유용한 이 기법들을 단계별로 설명합니다.

핑 명령어는 ICMP Echo Request 패킷을 전송하여 대상 호스트의 응답 시간과 패킷 손실률을 측정합니다. 단일 대상에 대한 핑은 간단하지만, 서브넷 전체를 스캔해야 하거나 여러 서버의 상태를 동시에 확인해야 할 때는 자동화된 방법이 필요합니다. 명령 프롬프트에서 제공하는 FOR 루프는 이러한 요구를 충족시키는 기본적인 도구입니다. 하지만 FOR 루프는 순차 실행이므로 대상 수가 많을 때 시간이 오래 걸릴 수 있습니다. 이에 비해 PowerShell의 작업(Job)이나 fping 같은 도구는 병렬 처리를 지원하여 전체 소요 시간을 크게 줄여줍니다. 각 환경과 상황에 맞는 최적의 방법을 선택하는 것이 중요합니다.

Windows 명령 프롬프트에서 FOR 반복문 활용

Windows 명령 프롬프트에서 여러 IP 주소를 순차적으로 핑하는 가장 기본적인 방법은 FOR 반복문을 사용하는 것입니다. 이 반복문은 지정된 범위의 값을 순회하며 각 값에 대해 핑 명령을 실행합니다. 예를 들어 192.168.0.1부터 192.168.0.254까지 모든 주소에 핑을 보내려면 다음과 같은 명령어를 사용할 수 있습니다.

명령어: FOR /L %i IN (1,1,254) DO ping -n 1 192.168.0.%i

명령 프롬프트에서 여러 대상 동시에 핑하는 방법 - 1

위 명령에서 /L 옵션은 숫자 범위를 지정하며, %i는 변수로 사용됩니다. (1,1,254)는 시작값 1, 증가값 1, 종료값 254를 의미합니다. DO 뒤에 오는 ping -n 1 192.168.0.%i는 각 IP 주소에 한 번의 핑을 보냅니다. 이 방법은 간단하지만 모든 대상에 대해 순차적으로 핑을 수행하므로 254개 주소를 모두 검사하는 데 상당한 시간이 소요됩니다. 특히 응답이 없는 호스트는 타임아웃 대기 시간 때문에 전체 실행 시간이 더 길어집니다.

다음은 FOR 반복문에서 자주 사용하는 옵션들의 목록입니다.

  • -n count: 전송할 Echo Request 패킷 수를 지정합니다. 기본값은 4입니다.
  • -l size: 패킷 크기를 바이트 단위로 지정합니다. 기본값은 32입니다.
  • -w timeout: 각 응답 대기 시간(밀리초)을 지정합니다. 기본값은 4000입니다.
  • -t: 중단될 때까지 계속 핑을 보냅니다. Ctrl+C로 중단합니다.
  • -a: IP 주소를 호스트 이름으로 역변환합니다.

FOR 반복문을 사용할 때 주의할 점은 변수 %i를 명령 프롬프트에서 직접 사용할 때는 퍼센트 기호 하나만 사용하지만, 배치 파일 안에서는 %%i와 같이 두 개를 사용해야 한다는 것입니다. 또한 명령어가 길어질 경우 가독성을 위해 줄 바꿈 없이 한 줄로 입력해야 합니다.

필터링과 결과 저장 방법

FOR 반복문으로 여러 대상에 핑을 보내면 모든 결과가 화면에 출력되지만, 실제로 필요한 정보는 응답이 성공한 호스트와 실패한 호스트를 구분하는 것입니다. 이때 FIND 명령을 사용하여 특정 문자열을 포함하는 줄만 걸러낼 수 있습니다. 핑 명령에서 성공적인 응답은 일반적으로 "Reply from"이라는 문자열을 포함합니다. 따라서 다음과 같이 FIND를 파이프라인으로 연결하면 성공한 핑 결과만 볼 수 있습니다.

명령 프롬프트에서 여러 대상 동시에 핑하는 방법 - 2

명령어: FOR /L %i IN (1,1,254) DO ping -n 1 192.168.0.%i | FIND /i "Reply"

위 명령에서 | 파이프 기호는 왼쪽 명령의 출력을 오른쪽 명령의 입력으로 전달합니다. FIND /i는 대소문자를 구분하지 않고 "Reply" 문자열이 포함된 줄만 출력합니다. 이렇게 필터링하면 응답이 있는 호스트만 화면에 표시되므로 네트워크 상의 활성 장치를 빠르게 파악할 수 있습니다. 또한 결과를 텍스트 파일로 저장하려면 리다이렉션 기호 >를 사용합니다.

명령어: FOR /L %i IN (1,1,254) DO ping -n 1 192.168.0.%i | FIND /i "Reply" > results.txt

이 명령은 모든 성공적인 핑 응답을 results.txt 파일에 저장합니다. 파일 이름과 경로는 원하는 대로 변경할 수 있습니다. 필터링 조건을 바꾸면 실패한 호스트만 볼 수도 있습니다. 예를 들어 "Request timed out" 문자열을 찾으면 응답이 없는 호스트를 확인할 수 있습니다. 이 방법은 간단하지만 순차 실행으로 인해 시간이 오래 걸리는 단점이 있습니다.

명령 프롬프트에서 여러 대상 동시에 핑하는 방법 - 3

PowerShell을 이용한 동시 핑 방법

PowerShell은 명령 프롬프트보다 더 강력한 병렬 처리 기능을 제공합니다. PowerShell에서 여러 대상에 동시에 핑을 보내는 방법 중 하나는 백그라운드 작업(Job)을 사용하는 것입니다. Start-Job 명령으로 각 핑 작업을 별도의 프로세스에서 실행하면 여러 대상이 동시에 테스트됩니다. 다음은 연속 핑을 수행하는 예시입니다.

명령어: Start-Job -ScriptBlock {While($true) {Ping.exe 192.168.0.1 -n 1; Start-Sleep -Seconds 5}}

이 명령은 IP 주소 192.168.0.1에 대해 5초 간격으로 계속 핑을 보내는 작업을 생성합니다. 여러 대상에 대해 각각 Start-Job을 실행하면 모든 작업이 동시에 실행됩니다. 작업의 결과를 확인하려면 Get-Job으로 작업 목록을 보고 Receive-Job으로 결과를 가져옵니다. 작업을 중단하려면 Stop-Job을 사용합니다.

PowerShell의 또 다른 방법은 Foreach-Object -Parallel을 사용하는 것입니다. 이는 PowerShell 7 이상에서 지원되며, 각 파이프라인 요소에 대해 병렬로 명령을 실행합니다. 예를 들어 IP 범위를 배열로 만든 후 병렬 핑을 수행할 수 있습니다. 다음은 간단한 예입니다.

명령 프롬프트에서 여러 대상 동시에 핑하는 방법 - 4

명령어: 1..254 | Foreach-Object -Parallel { ping -n 1 ("192.168.0." + $_) }

이 방법은 FOR 반복문보다 속도가 빠르며, 결과를 추가로 필터링하거나 저장하기 쉽습니다. PowerShell을 사용하면 여러 대상을 동시에 모니터링할 수 있는 스크립트를 작성할 수 있어 효율적입니다.

아래 표는 명령 프롬프트 FOR 반복문, PowerShell 작업, 그리고 서드파티 도구 fping의 주요 특징을 비교한 것입니다.

방법 실행 방식 속도 필터링 용이성 플랫폼
CMD FOR 루프 순차적 느림 FIND 파이프라인 필요 Windows
PowerShell 작업 병렬 보통 직접 처리 가능 Windows
fping 병렬 매우 빠름 옵션 내장 Linux/Unix

리눅스와 유닉스 환경에서의 접근법

리눅스나 유닉스 계열 시스템에서는 기본 ping 명령어가 여러 대상 동시 핑을 지원하지 않습니다. 따라서 쉘 스크립트를 작성하거나 서드파티 도구를 사용해야 합니다. 널리 사용되는 도구로는 fping이 있습니다. fping은 여러 대상에 ICMP 패킷을 동시에 전송하고 응답을 수집하는 기능을 제공합니다. 설치 후 다음과 같이 사용할 수 있습니다.

명령 프롬프트에서 여러 대상 동시에 핑하는 방법 - 5

명령어: fping -g 192.168.0.0/24

위 명령은 192.168.0.0/24 서브넷에 속한 모든 IP 주소에 핑을 보냅니다. -g 옵션은 IP 범위를 CIDR 표기법이나 시작-끝 형식으로 지정할 때 사용합니다. fping은 응답이 있는 호스트와 없는 호스트를 구분하여 표시하며, 옵션을 통해 출력 형식을 조정할 수 있습니다. 또한 여러 호스트를 공백으로 구분하여 직접 나열할 수도 있습니다.

명령어: fping host1 host2 host3

fping은 기본 ping보다 빠르며, 대규모 네트워크 스캔에 적합합니다. 리눅스 배포판에 따라 패키지 관리자로 설치할 수 있습니다. 예를 들어 우분투에서는 sudo apt install fping으로 설치합니다. fping 외에도 nmap의 ping sweep 기능을 사용할 수 있지만, 이는 더 포괄적인 네트워크 스캐닝 도구입니다.

실제 적용 예시와 주의사항

여러 대상 동시 핑은 실제 네트워크 문제 해결에 유용합니다. 예를 들어 사무실 네트워크에서 특정 세그먼트의 모든 장치가 정상적으로 응답하는지 확인해야 할 때, 위에서 설명한 방법을 사용하면 빠르게 활성 장치 목록을 얻을 수 있습니다. 또한 서버 팜의 상태를 모니터링할 때 PowerShell 작업을 사용하면 각 서버에 지속적인 핑을 보내고 장애 발생 시 로그를 기록할 수 있습니다. 명령 프롬프트 기반 방법은 스크립트에 통합하기 쉬워 자동화된 점검 시스템을 구축하는 데 도움이 됩니다.

사용 시 주의할 점이 몇 가지 있습니다. 첫째, 많은 수의 핑을 동시에 보내면 네트워크 트래픽이 증가할 수 있으므로 적절한 패킷 수와 크기를 선택해야 합니다. 특히 무선 네트워크나 대역폭이 제한된 환경에서는 부하를 고려해야 합니다. 둘째, 방화벽이 ICMP 요청을 차단하도록 설정된 경우 응답을 받지 못할 수 있습니다. 따라서 핑 결과가 없다고 해서 반드시 장치가 다운된 것은 아니며, 네트워크 정책도 확인해야 합니다. 셋째, 명령 프롬프트에서 긴 명령어를 사용할 때는 오타에 주의하고, 배치 파일로 저장하여 재사용하는 것이 좋습니다.

참고 자료

본 글에서 설명한 명령어와 기법은 다음과 같은 공식 문서와 커뮤니티 자료를 참고하여 작성되었습니다. Microsoft Learn의 Windows ping 명령 참조는 FOR 반복문과 핑 옵션에 대한 기본 정보를 제공합니다. 또한 SuperUser 커뮤니티에서 다루는 여러 IP 주소 동시 핑 방법은 필터링과 결과 저장에 대한 실용적인 팁을 포함합니다. 이러한 자료를 통해 독자는 더 깊이 있는 학습을 할 수 있습니다.

Microsoft Learn: ping 명령 참조
SuperUser: 여러 IP 주소 동시 핑 방법

명령 프롬프트 ping Windows CMD 네트워크 문제해결
주의 환경에 따라 결과가 다를 수 있으며 네트워크 정책을 확인하세요.
작성자

Stefano Barcellos

Visite Barbados 기여자.

« 이전 글
PC에서 이모지 넣는 방법 완벽 정리

관련 글