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

246 lines
6.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🔍 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](https://github.com/darkoperator/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ç
```powershell
# Execution Policy (bir kez gerekli)
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
```
### 2. Menüyü Başlat
```powershell
cd C:\Tools\NetworkSwitchDiscovery
.\Start-SwitchDiscovery.ps1
```
### 3. Veya Doğrudan Parametreli Çalıştır
```powershell
# 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
```powershell
# 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)
```powershell
# 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*