여러 IP를 동시에 ping하는 명령 프롬프트 방법
네트워크 관리나 장애 진단을 할 때 여러 IP 주소의 응답 상태를 한 번에 확인해야 하는 경우가 있습니다. 명령 프롬프트에서 ping 명령어는 기본적으로 하나의 대상만을 검사하지만, 윈도우에서는 여러 IP를 동시에 ping하는 여러 방법을 제공합니다. 이 글에서는 명령 프롬프트와 파워셸을 활용하여 여러 IP를 동시에 ping하는 실용적인 방법을 자세히 설명합니다. 초보자부터 전문가까지 모두 따라 할 수 있도록 단계별로 안내합니다.
명령 프롬프트에서 for 반복문 사용하기
윈도우 명령 프롬프트에서 여러 IP를 동시에 ping하는 가장 기본적인 방법은 for 반복문을 사용하는 것입니다. 이 방법은 특정 IP 범위를 지정하여 순차적으로 ping을 보내고 결과를 확인할 수 있습니다. 예를 들어 192.168.0.1부터 192.168.0.254까지의 모든 주소를 검사하려면 다음과 같은 명령어를 사용합니다. for /L %i in (1,1,254) do ping -n 1 -w 20 192.168.0.%i | find "Reply" 이 명령어는 각 IP에 대해 한 번의 ping 패킷을 보내고 응답이 있는 경우에만 결과를 표시합니다. -w 20 옵션은 각 ping의 시간 제한을 20밀리초로 설정하여 빠른 검색을 가능하게 합니다. 이 방법은 네트워크 내에서 활성 상태인 장치를 찾을 때 매우 유용하며, 스크립트 파일로 저장하여 반복적으로 사용할 수도 있습니다.
실제 사용 예를 들어 설명하겠습니다. 사무실 네트워크에서 특정 대역의 모든 컴퓨터가 정상적으로 작동하는지 확인해야 할 때 이 명령어를 사용합니다. 명령 프롬프트를 관리자 권한으로 열고 위 명령어를 입력하면 화면에 응답이 있는 IP 주소만 출력됩니다. 응답이 없는 IP는 자동으로 생략되므로 결과를 한눈에 파악할 수 있습니다. 시간 제한을 20밀리초로 설정한 이유는 일반적인 로컬 네트워크에서의 응답 시간이 매우 짧기 때문입니다. 만약 원격 네트워크를 검사할 경우 -w 값을 1000 또는 2000으로 늘려야 할 수 있습니다. 이 방법을 사용할 때 주의할 점은 명령 프롬프트에서 %i를 사용할 때는 단일 퍼센트 기호를 사용하고, 배치 파일에서는 %%i와 같이 이중 퍼센트를 사용해야 한다는 것입니다.
여러 특정 IP를 한 줄로 ping하기
윈도우 명령 프롬프트에서는 여러 IP 주소를 공백으로 구분하여 한 줄의 명령어로 ping을 보낼 수 있습니다. 예를 들어 ping 8.8.8.8 1.1.1.1 8.8.4.4라고 입력하면 각 IP에 대해 순차적으로 ping을 실행합니다. 이 방법은 간단하지만 모든 IP에 대한 결과를 기다려야 하므로 시간이 오래 걸릴 수 있습니다. 또한 각 ping의 결과가 연속적으로 출력되므로 특정 IP의 응답을 찾기 위해 화면을 스크롤해야 하는 불편함이 있습니다. 이 방법은 소수의 IP만 테스트할 때 유용하며, 빠른 확인이 필요한 상황에서 사용할 수 있습니다.

이 명령어의 작동 방식을 자세히 살펴보면, 윈도우는 첫 번째 IP에 ping을 보내고 결과를 출력한 후 두 번째 IP로 넘어갑니다. 따라서 모든 IP에 대한 테스트가 완료될 때까지 기다려야 하며, 중간에 멈추고 싶다면 Ctrl+C를 눌러야 합니다. 이 방법은 for 반복문보다 덜 효율적이지만, 특정 IP 목록이 정해져 있을 때 간단히 사용할 수 있다는 장점이 있습니다. 예를 들어 DNS 서버 IP 목록이나 중요 서버 IP를 테스트할 때 적합합니다. 단점으로는 IP 개수가 많아지면 명령어가 너무 길어질 수 있고, 각 ping의 응답 대기 시간이 누적되어 전체 시간이 늘어납니다.
윈도우 파워셸로 병렬 ping 실행하기
파워셸은 명령 프롬프트보다 더 강력한 기능을 제공하며, Test-Connection cmdlet을 사용하면 여러 컴퓨터에 대해 병렬로 ping을 실행할 수 있습니다. 기본 명령어는 Test-Connection -ComputerName 8.8.8.8, 1.1.1.1, 8.8.4.4 -Count 1입니다. 이 명령어는 세 개의 IP 주소에 대해 동시에 ping을 보내고 각각의 결과를 빠르게 반환합니다. -Count 1 옵션은 각 IP에 대해 한 번의 테스트만 수행하도록 지정합니다. 파워셸을 처음 사용하는 경우 관리자 권한으로 실행해야 할 수 있으며, 실행 정책 설정이 필요할 수 있습니다.
Test-Connection의 장점은 병렬 처리로 인해 속도가 매우 빠르다는 점입니다. 예를 들어 10개의 IP를 테스트할 때 명령 프롬프트에서는 순차적으로 실행되어 약 10초가 걸리지만, 파워셸에서는 동시에 실행되어 1초 이내에 결과를 얻을 수 있습니다. 또한 결과를 표 형태로 표시하거나 CSV 파일로 내보내는 등 추가 처리가 용이합니다. 실제 업무에서 네트워크 장비의 상태를 주기적으로 모니터링해야 한다면 파워셸 스크립트를 작성하여 자동화할 수 있습니다. 이 방법은 특히 대규모 네트워크에서 수백 개의 IP를 동시에 테스트할 때 유용합니다.
파워셸 잡을 사용한 지속적 병렬 ping
더 고급 기능으로는 Start-Job을 사용하여 각 IP에 대해 지속적인 ping을 백그라운드에서 실행하는 방법이 있습니다. 다음은 예제 명령어입니다. $ips = @("8.8.8.8", "1.1.1.1", "8.8.4.4"); foreach ($ip in $ips) { Start-Job -ScriptBlock { param($ip) while($true) { ping -n 1 $ip | Out-Null; Start-Sleep -Seconds 1 } } -ArgumentList $ip } 이 스크립트는 각 IP에 대해 무한 루프로 ping을 보내면서 1초 간격으로 반복합니다. 각 작업은 별도의 백그라운드 프로세스로 실행되므로 명령 프롬프트는 계속 사용할 수 있습니다. 결과를 확인하려면 Get-Job | Receive-Job 명령어를 사용하면 됩니다.

이 방법의 장점은 여러 IP를 실시간으로 모니터링할 수 있다는 점입니다. 예를 들어 네트워크 장애가 발생했을 때 특정 서버의 응답 여부를 지속적으로 확인해야 하는 상황에서 유용합니다. 단점으로는 많은 수의 잡이 실행될 경우 시스템 리소스를 많이 사용할 수 있다는 점입니다. 또한 잡이 백그라운드에서 실행되므로 오류 발생 시 사용자가 인지하지 못할 수 있습니다. 따라서 이 방법을 사용할 때는 적절한 로깅 메커니즘을 추가하는 것이 좋습니다. 잡을 중지하려면 Stop-Job과 Remove-Job 명령어를 사용합니다.
명령 프롬프트와 파워셸 비교표
다음 표는 여러 IP를 동시에 ping하는 각 방법의 특징을 비교한 것입니다. 사용 환경과 목적에 따라 적합한 방법을 선택할 수 있습니다.
| 방법 | 도구 | 실행 방식 | 속도 | 사용 난이도 | 적합한 상황 |
|---|---|---|---|---|---|
| for 반복문 | 명령 프롬프트 | 순차적 | 느림 | 낮음 | IP 범위 검색 |
| 여러 IP 나열 | 명령 프롬프트 | 순차적 | 느림 | 낮음 | 소수 IP 테스트 |
| Test-Connection | 파워셸 | 병렬 | 빠름 | 중간 | 다수 IP 동시 테스트 |
| Start-Job | 파워셸 | 백그라운드 병렬 | 실시간 | 높음 | 지속적 모니터링 |
| PingInfoView | 서드파티 GUI | 병렬 | 빠름 | 매우 낮음 | 초보자, 시각적 확인 |
서드파티 도구 사용하기
명령 프롬프트나 파워셸을 사용하기 어려운 사용자를 위해 NirSoft의 PingInfoView와 같은 전용 GUI 도구가 있습니다. 이 도구는 사용자가 IP 주소 목록을 입력하면 동시에 ping을 실행하고 결과를 실시간으로 표시합니다. PingInfoView는 설치가 필요 없는 실행 파일 형태로 제공되며, 여러 IP의 응답 시간과 손실률을 그래프로 보여줍니다. 이 도구는 네트워크 관리자뿐만 아니라 일반 사용자도 쉽게 사용할 수 있도록 설계되었습니다.

PingInfoView의 주요 기능으로는 IP 목록을 텍스트 파일에서 불러오기, 결과를 HTML이나 CSV로 내보내기, 각 핑의 응답 시간 기록 저장 등이 있습니다. 이 도구를 사용하면 복잡한 명령어를 외울 필요 없이 직관적인 인터페이스로 여러 IP를 모니터링할 수 있습니다. 특히 네트워크 장애를 진단할 때 시각적인 피드백이 큰 도움이 됩니다. 단점으로는 명령줄 도구만큼 유연하지 않으며, 대규모 자동화 스크립트에 통합하기 어렵다는 점이 있습니다. 그러나 작은 규모의 네트워크나 가정 환경에서는 충분히 유용하게 사용할 수 있습니다.
주의사항과 팁
여러 IP를 동시에 ping할 때 몇 가지 주의할 점이 있습니다. 첫째, 네트워크 대역폭을 고려해야 합니다. 너무 많은 IP에 동시에 ping을 보내면 네트워크 트래픽이 증가하여 다른 작업에 영향을 줄 수 있습니다. 특히 느린 네트워크 환경에서는 ping 패킷이 손실되거나 지연될 수 있습니다. 둘째, 방화벽 설정을 확인해야 합니다. 일부 네트워크에서는 ICMP 패킷을 차단하므로 ping 요청이 무시될 수 있습니다. 이 경우 대상 호스트가 정상이더라도 응답이 없을 수 있습니다. 셋째, 명령 프롬프트와 파워셸의 차이를 이해해야 합니다. 명령 프롬프트는 순차적 실행을 기본으로 하지만, 파워셸은 병렬 실행을 지원합니다.
효율적인 사용을 위한 팁을 소개합니다. IP 목록을 텍스트 파일로 관리하면 반복적인 작업이 편리합니다. 예를 들어 ip_list.txt 파일에 각 줄마다 IP를 작성해 두고 파워셸에서 Get-Content ip_list.txt | ForEach-Object { Test-Connection $_ -Count 1 }와 같이 사용할 수 있습니다. 또한 ping의 응답 시간을 기준으로 성능을 평가할 때는 -Count 옵션을 3 이상으로 설정하여 평균값을 구하는 것이 더 신뢰할 수 있습니다. 마지막으로, 결과를 파일로 저장하여 이력 관리에 활용하면 네트워크 상태 변화를 추적하는 데 도움이 됩니다.
실전 예제와 코드 리스트
다음은 실제 업무에서 사용할 수 있는 유용한 예제 코드 목록입니다. 각 코드는 특정 상황에 맞게 설계되었습니다.

- 예제 1: 로컬 네트워크 모든 IP 스캔 - for /L %i in (1,1,254) do ping -n 1 -w 10 10.0.0.%i | find "TTL"
- 예제 2: 중요 서버 3개 동시 확인 - 파워셸에서 Test-Connection 192.168.1.10, 192.168.1.20, 192.168.1.30 -Count 2
- 예제 3: 지속적인 모니터링을 위한 스크립트 - $ips = @("8.8.8.8","1.1.1.1"); foreach ($ip in $ips) { Start-Job -ScriptBlock {param($i) while(1){ping -n 1 $i | Out-Null; Start-Sleep 5}} -Arg $ip }
- 예제 4: 파일에서 IP 목록 읽어서 ping - Get-Content servers.txt | ForEach-Object { Test-Connection $_ -Count 1 | Select-Object Address, Status }
- 예제 5: 배치 파일로 결과 저장 - for /L %i in (1,1,254) do ping -n 1 192.168.1.%i >> ping_results.txt
이 예제들은 기본적인 틀을 제공하며, 사용자는 자신의 환경에 맞게 IP 주소와 옵션을 수정하면 됩니다. 예를 들어 예제 1에서 TTL을 찾는 이유는 TTL 값이 포함된 응답만 실제로 패킷이 도달했다는 의미이기 때문입니다. 예제 2에서 -Count 2는 각 IP에 2번의 ping을 보내 평균 응답 시간을 계산할 때 유용합니다. 예제 3은 무한 루프를 사용하므로 반드시 필요할 때만 실행하고, 사용 후에는 Get-Job | Stop-Job으로 중지해야 합니다.
참고 자료
이 글에서 설명한 내용은 다음 출처를 참고하여 작성되었습니다. 더 자세한 정보가 필요하면 해당 자료를 직접 확인하시기 바랍니다.
SuperUser 커뮤니티에서 제공하는 명령 프롬프트 for 반복문 관련 답변: superuser.com/questions/420714/cmd-exe-command-to-ping-a-range-of-addresses

마이크로소프트 공식 문서의 ping 명령어 설명: learn.microsoft.com/en-us/windows-server/administration/windows-commands/ping
파워셸 Test-Connection cmdlet에 대한 마이크로소프트 문서: learn.microsoft.com/powershell/module/microsoft.powershell.management/test-connection
NirSoft의 PingInfoView 도구 공식 페이지: nirsoft.net/utils/pinginfoview.html
레딧 파워셸 커뮤니티의 Start-Job 활용 사례: reddit.com/r/PowerShell/comments/17949iu/how_to_do_continuous_ping_to_multiple_ips_and




