## 프로젝트 개요
로컬 네트워크에 연결된 장치(예: 라우터, 스위치 등)의 상태를 실시간으로 모니터링하고, 문제가 발생할 경우 알림을 제공하는 자동화 시스템입니다. 이 스크립트는 네트워크 장비의 IP 주소 목록을 기반으로 ping 테스트를 수행하며, 응답 시간이 지연되었거나 연결이 끊겼을 경우 사용자에게 알림을 제공합니다.
## 주요 기능
- 로컬 네트워크 장치들의 상태 모니터링
- 자동 알림 시스템 (메일 및 콘솔 출력)
- 설정 파일을 통한 IP 목록 관리
- 테스트 결과를 CSV 파일로 저장
## 사용 방법
1. `config.json` 파일에 감시할 IP 주소 목록 입력
2. 스크립트를 실행하여 실시간 모니터링 시작
3. 특정 시간 간격으로 자동 재검사 수행
4. 결과는 CSV 파일로 저장되어 분석 가능
## 확장 가능성
- 이메일 알림 추가
- 웹 API 통한 상태 전송
- 사용자 인터페이스 구현
💙 PowerShell로 로컬 네트워크 장비 상태 모니터링 시스템 구축
PowerShell 예제
중급
난이도
예제
타입
11/04
등록일
PowerShell로 로컬 네트워크 장비 상태 모니터링 시스템 구축
중급태그
코드 예제
# 네트워크 장비 모니터링 스크립트
# 설정 파일 경로
$configFilePath = "C:\scripts
etwork-monitor-config.json"
$outputFile = "C:\scripts
etwork_monitor_results.csv"
# 설정 읽기
$settings = Get-Content -Path $configFilePath | ConvertFrom-Json
# CSV 파일 초기화 (헤더)
if (-not (Test-Path -Path $outputFile)) {
New-Item -ItemType File -Path $outputFile -Force
Add-Content -Path $outputFile "IPAddress,Status,ResponseTime"
}
# 상태 확인 함수
function Test-NetworkDevice {
param (
[string]$ipAddress,
[int]$timeout = 500
)
try {
$response = ping -n 1 $ipAddress -w $timeout | Select-String "bytes from"
if ($response) {
$status = "Online"
$responseTime = (Measure-Command { Test-Connection -ComputerName $ipAddress -Count 1 -TimeoutSeconds 5 }).TotalMilliseconds
} else {
$status = "Offline"
$responseTime = 0
}
} catch {
$status = "Error"
$responseTime = 0
}
return @{
IPAddress = $ipAddress
Status = $status
ResponseTime = [math]::Round($responseTime, 2)
}
}
# 알림 함수 (예: 콘솔 출력 및 이메일 전송)
function Send-NetworkAlert {
param (
[string]$ipAddress,
[string]$status,
[double]$responseTime
)
# 콘솔에 알림 표시
Write-Host "[알림] $ipAddress 상태: $status, 응답 시간: $responseTime ms"
# 이메일 전송 로직 추가 가능
}
# 주기적인 모니터링 실행
while ($true) {
foreach ($ip in $settings.IPs) {
$deviceStatus = Test-NetworkDevice -ipAddress $ip
$resultLine = "$($deviceStatus.IPAddress),$($deviceStatus.Status),$($deviceStatus.ResponseTime)"
Add-Content -Path $outputFile $resultLine
if ($deviceStatus.Status -eq "Offline") {
Send-NetworkAlert -ipAddress $deviceStatus.IPAddress -status $deviceStatus.Status -responseTime $deviceStatus.Response
등록일: 2025년 11월 04일 02:33
언어 정보
언어
PowerShell
카테고리
Microsoft
인기도
#21
학습 팁
코드를 직접 실행해보세요
변수를 바꿔가며 실험해보세요
오류가 나도 포기하지 마세요
다른 예제도 찾아보세요