<# .SYNOPSIS اسکریپت مانیتورینگ پیشرفته اینترفیس‌های میکروتیک .DESCRIPTION این اسکریپت وضعیت اینترفیس‌ها، ترافیک و خطاها را مانیتور می‌کند Version: 2.5 Author: شبکه‌ای‌ها #> # تنظیمات اولیه $routerIP = "192.168.168.5" # آدرس IP روتر میکروتیک $username = "Armin" # نام کاربری $password = "ZXC123456zxc@" # رمز عبور $monitorInterval = 5 # بازه مانیتورینگ بر حسب ثانیه $alertThreshold = 80 # آستانه هشدار برای استفاده از پهنای باند (%) $logFile = "C:\logs\mikrotik_interface_monitor.log" # فایل ذخیره لاگ‌ها # تابع اتصال به میکروتیک function Connect-MikroTik { param( [string]$router, [string]$user, [string]$pass ) try { $session = New-PSSession -HostName $router -UserName $user -Password (ConvertTo-SecureString $pass -AsPlainText -Force) Invoke-Command -Session $session -ScriptBlock { /system identity get name } | Out-Null return $session } catch { Write-Host "خطا در اتصال به روتر: $_" -ForegroundColor Red exit 1 } } # تابع جمع‌آوری اطلاعات اینترفیس‌ها function Get-InterfaceStats { param( [System.Management.Automation.Runspaces.PSSession]$session ) $interfaceCommand = { /interface monitor-traffic interface=all once /interface print stats } $stats = Invoke-Command -Session $session -ScriptBlock $interfaceCommand return $stats } # تابع نمایش اطلاعات به صورت Real-Time function Show-InterfaceStatus { param( $interfaceData, [int]$interval ) Clear-Host Write-Host "=== مانیتورینگ لحظه‌ای اینترفیس‌های میکروتیک ===" -ForegroundColor Cyan Write-Host "آخرین بروزرسانی: $(Get-Date -Format 'yyyy-MM-dd HH:mm:ss')" Write-Host "----------------------------------------------" foreach ($interface in $interfaceData) { $name = $interface.Name $rx = [math]::Round($interface."rx-bits-per-second" / 1Mb, 2) $tx = [math]::Round($interface."tx-bits-per-second" / 1Mb, 2) $status = if ($interface.Running) {"فعال"} else {"غیرفعال"} # تشخیص رنگ بر اساس آستانه هشدار $color = if (($rx + $tx) -gt $alertThreshold) {"Red"} else {"Green"} Write-Host "اینترفیس: $name" -ForegroundColor Yellow Write-Host "وضعیت: $status" Write-Host "دریافتی: $rx Mbps | ارسالی: $tx Mbps" -ForegroundColor $color Write-Host "----------------------------------------------" } } # تابع ذخیره لاگ function Save-InterfaceLog { param( $data, [string]$logPath ) $logEntry = @{ Timestamp = Get-Date -Format 'o' Interfaces = $data } | ConvertTo-Json -Depth 5 Add-Content -Path $logPath -Value $logEntry } # اجرای اصلی اسکریپت try { # اتصال به روتر $session = Connect-MikroTik -router $routerIP -user $username -pass $password # حلقه مانیتورینگ while ($true) { $interfaceData = Get-InterfaceStats -session $session Show-InterfaceStatus -interfaceData $interfaceData -interval $monitorInterval Save-InterfaceLog -data $interfaceData -logPath $logFile Start-Sleep -Seconds $monitorInterval } } catch { Write-Host "خطا در اجرای اسکریپت: $_" -ForegroundColor Red } finally { if ($session) { Remove-PSSession $session } }