Files
hNetworkSwitchDiscovery/README.md
2026-05-06 10:43:38 +03:00

6.5 KiB
Raw Blame History

🔍 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 ı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 ı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

show version
show system

Tespit: TL-, model kodu deseni


📡 SNMP OID Referansı

OID ı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 ı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.json dosyasına kaydedilmez, her oturumda sorulur.
  • SSH host anahtarları Posh-SSH tarafı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