핑이 끊겼거나 응답이 없는 경우를 어떻게 알 수 있나요?

핑이 끊겼거나 응답이 없는 경우를 어떻게 알 수 있나요?

Windows 업데이트를 설치하거나 특정 시점에 하나 이상의 자동 재부팅이 포함된 기타 유지 관리를 수행할 때 수년 동안 계속해서 동일한 문제를 겪었습니다.

  1. 특정 장치에 대한 네트워크 연결이 중단되었는지 어떻게 확인하고 이를 타임코드로 기록할 수 있습니까? VM을 재부팅할 때 흔히 발생하는 것처럼 중단이 몇 초만 지속되더라도 마찬가지입니다.

  2. 로그 파일을 오랫동안 검색하지 않고 네트워크 연결 중단(= 재부팅)이 언제, 얼마나 오랫동안 발생했는지 어떻게 알 수 있나요?

  3. 특별한 소프트웨어 없이 이 문제를 해결할 수 있는 방법이 있습니까? PowerShell과 같은 Windows 도구만 사용하나요?

답변1

나는 일반적으로 이 스크립트를 사용하여 하나 이상의 컴퓨터가 올라가고 내려가는 것을 지켜봅니다.

# pinger.ps1

# example: pinger comp01
# pinger $list

param ($hostnames)

$pingcmd = 'test-connection'

$sleeptime = 1

$sawup = @{}
$sawdown = @{}

foreach ($hostname in $hostnames) { 
  $sawup[$hostname] = $false
  $sawdown[$hostname] = $false
}

while ($true) {
  foreach ($hostname in $hostnames) {
    if (& $pingcmd -count 1 $hostname -ea 0) {
      if (! $sawup[$hostname]) {
        echo "$([console]::beep(500,300))$hostname is up $(get-date)"
        $sawup[$hostname] = $true
        $sawdown[$hostname] = $false
      }
    } else {
      if (! $sawdown[$hostname]) {
        echo "$([console]::beep(500,300))$hostname is down $(get-date)"
date}
        $sawdown[$hostname] = $true
        $sawup[$hostname] = $false
      }
    }
  }
  sleep $sleeptime
}
pinger comp01,comp02

comp01 is up 12/02/2022 13:16:47
comp02 is up 12/02/2022 13:16:47

답변2

PowerShell 및 Windows 10/Windows Server >= 2016을 사용한 솔루션:

  1. 호스트를 지속적으로 ping하고 응답을 작성합니다.~와 함께타임코드를 텍스트 파일로 변환합니다(화면에도 표시함). 여기에서 IP 주소나 호스트 이름을 사용할 수 있습니다.

    $computer = "192.168.1.29"; ping.exe -t $computer | Foreach{"{0} - {1}" -f (Get-Date),$_} | Tee "$env:userprofile\documents\Ping_$computer.txt" -append
    
  2. 두 번째 PowerShell 창을 열고 다음 명령을 입력합니다. 그러면 PowerShell 창 #1에서 텍스트 파일을 지속적으로 모니터링하고 "Reply" 문자열이 포함되지 않은 모든 줄을 출력합니다. 그래서 핑이 작동하지 않는 모든 시간.

    Get-content "$env:userprofile\documents\Ping_192.168.1.29.txt" -Tail 0 -Wait | where { $_ -NotMatch "Reply" }
    

관련 정보