6.5 KiB
🔍 Network Switch Discovery Tool
PowerShell tabanlı, SSH + SNMP destekli, çoklu marka ağ switch keşif aracı.
Cisco, HP/Aruba, Ubiquiti/UniFi, Huawei, TP-Link ve diğer markaları otomatik olarak tespit eder.
📁 Dosya Yapısı
NetworkSwitchDiscovery\
├── Start-SwitchDiscovery.ps1 ← İnteraktif menü (buradan başla)
├── Invoke-SwitchDiscovery.ps1 ← Ana keşif motoru
├── discovery_config.json ← Otomatik kaydedilen ayarlar (ilk çalıştırmada oluşur)
├── lib\
│ └── SharpSnmpLib.dll ← (İsteğe bağlı) Gelişmiş SNMP desteği
└── README.md
⚙️ Gereksinimler
| Gereksinim | Açıklama |
|---|---|
| PowerShell 5.1+ | Windows 10/11 ile birlikte gelir |
| Posh-SSH | SSH bağlantısı için (otomatik kurulum menüde mevcut) |
| .NET Framework 4.7+ | SNMP UDP soketi için |
| SharpSnmpLib.dll | İsteğe bağlı, gelişmiş SNMP v3 desteği için |
🚀 Hızlı Başlangıç
1. PowerShell'i Yönetici Olarak Aç
# Execution Policy (bir kez gerekli)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
2. Menüyü Başlat
cd C:\Tools\NetworkSwitchDiscovery
.\Start-SwitchDiscovery.ps1
3. Veya Doğrudan Parametreli Çalıştır
# CIDR aralığı, SSH + SNMP birlikte
.\Invoke-SwitchDiscovery.ps1 -IPRange "192.168.1.0/24" -Username admin -Method Both
# Sadece SNMP, farklı community
.\Invoke-SwitchDiscovery.ps1 -IPRange "10.0.0.1-10.0.0.50" -Method SNMP -SNMPCommunity private
# Tek IP, sadece SSH
.\Invoke-SwitchDiscovery.ps1 -IPRange "172.16.0.1" -Username admin -Password "sifre123" -Method SSH
📋 Parametreler
| Parametre | Varsayılan | Açıklama |
|---|---|---|
-IPRange |
(zorunlu) | CIDR, tire veya tekil IP |
-Username |
— | SSH kullanıcı adı |
-Password |
— | SSH şifre (girilmezse güvenli prompt açılır) |
-SNMPCommunity |
public |
SNMP community string |
-SNMPVersion |
v2c |
v1, v2c veya v3 |
-Method |
Both |
SSH, SNMP veya Both |
-OutputPath |
Script dizini | CSV/HTML çıktı klasörü |
-MaxThreads |
20 |
Paralel tarama thread sayısı |
-SSHPort |
22 |
SSH port numarası |
-Timeout |
5 |
Bağlantı zaman aşımı (saniye) |
🏷️ Desteklenen Markalar ve SSH Komutları
Cisco IOS / IOS-XE
terminal length 0
show version
show running-config | include hostname
Tespit: Banner'da Cisco ifadesi veya SNMP sysDescr
HP / Aruba ProCurve
no page
show system information
show version
Tespit: HP, ProCurve, Aruba ifadeleri
Ubiquiti EdgeSwitch / UniFi
show version
show system
Tespit: Ubiquiti, EdgeOS, UniFi ifadeleri
MikroTik RouterOS
/system identity print
/system resource print
/system routerboard print
Tespit: MikroTik ifadesi
Huawei VRP
screen-length 0 temporary
display version
display sysname
Tespit: Huawei ifadesi
TP-Link / Diğer
show version
show system
Tespit: TL-, model kodu deseni
📡 SNMP OID Referansı
| OID | Açıklama |
|---|---|
1.3.6.1.2.1.1.1.0 |
sysDescr — Cihaz tam açıklaması |
1.3.6.1.2.1.1.5.0 |
sysName — Hostname |
1.3.6.1.2.1.1.4.0 |
sysContact — İletişim bilgisi |
1.3.6.1.2.1.1.6.0 |
sysLocation — Fiziksel konum |
1.3.6.1.2.1.1.3.0 |
sysUpTime — Çalışma süresi |
SNMP community string varsayılan olarak public kullanılır.
Cihazda SNMP devre dışıysa veya community yanlışsa SNMP sütunu Başarısız gösterir.
📤 Çıktı Dosyaları
Her tarama sonunda iki dosya oluşturulur:
CSV (SwitchDiscovery_YYYYMMDD_HHmmss.csv)
Excel veya başka araçlarda açılabilir, UTF-8 kodlamalı.
| Alan | Açıklama |
|---|---|
| IP | Cihaz IP adresi |
| Hostname | Switch hostname (SNMP/SSH'dan) |
| DNSName | DNS çözümlemesi |
| Vendor | Tespit edilen marka |
| Model | Cihaz modeli |
| FirmwareVer | IOS/Firmware versiyonu |
| SysLocation | SNMP konum bilgisi |
| SysContact | SNMP iletişim bilgisi |
| Uptime | Cihaz çalışma süresi |
| SSHStatus | Başarılı / Başarısız / Atlandı |
| SNMPStatus | Başarılı / Başarısız / Atlandı |
| SysDescr | Ham sysDescr verisi |
HTML (SwitchDiscovery_YYYYMMDD_HHmmss.html)
Tarayıcıda açılan interaktif rapor:
- Anlık arama/filtreleme
- Marka renkli rozet gösterimi
- SSH/SNMP durum badgeleri
- Özet istatistik kartları
💡 Pratik Kullanım Örnekleri
# Tüm /24 ağı tara, sonucu masaüstüne kaydet
.\Invoke-SwitchDiscovery.ps1 `
-IPRange "192.168.10.0/24" `
-Username netadmin `
-SNMPCommunity mycompany `
-Method Both `
-OutputPath "$env:USERPROFILE\Desktop" `
-MaxThreads 30
# Birden fazla switch IP'si — tire formatıyla
.\Invoke-SwitchDiscovery.ps1 `
-IPRange "10.1.1.1-10.1.1.20" `
-Username cisco `
-Method SSH `
-SSHPort 2222
# Sadece SNMP, hızlı envanter
.\Invoke-SwitchDiscovery.ps1 `
-IPRange "172.20.0.0/22" `
-Method SNMP `
-SNMPCommunity readonly `
-MaxThreads 50 `
-Timeout 3
🔧 Sorun Giderme
| Sorun | Çözüm |
|---|---|
Posh-SSH bulunamadı |
Menüden [8] seçerek otomatik kurulum yap |
| SSH bağlantı hatası | Firewall port 22'yi açık, cihazda SSH aktif mi kontrol et |
| SNMP yanıt vermiyor | Community string'i doğrula, cihazda SNMP v2c aktif mi kontrol et |
execution policy hatası |
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser çalıştır |
| Thread hatası | -MaxThreads değerini düşür (örn. 5) |
| Şifre prompt açılmıyor | -Password parametresini doğrudan ver |
🔒 Güvenlik Notları
- Şifreler
discovery_config.jsondosyasına kaydedilmez, her oturumda sorulur. - SSH host anahtarları
Posh-SSHtarafından otomatik kabul edilir (-AcceptKey).
Üretim ortamında host key doğrulama etkinleştirilmesi önerilir. - SNMP v1/v2c community string düz metin iletilir. Mümkünse SNMP v3 kullan.
- Tarama yalnızca yetkili ağlarda yapılmalıdır.
📦 İsteğe Bağlı: SharpSnmpLib Kurulumu (Gelişmiş SNMP)
# NuGet ile indir
Install-Package SharpSnmpLib -Destination .\lib
# Veya dotnet CLI
dotnet add package SharpSnmpLib
# Ardından bin\Debug\net*\SharpSnmpLib.dll dosyasını .\lib\ klasörüne kopyala
SharpSnmpLib olmadan araç yerleşik UDP SNMP implementasyonu kullanır (v1/v2c destekli).
Mustafa Özkaya — NetworkSwitchDiscovery v1.0