In der Netzwerkverwaltung ist das regelmäßige Abrufen und Speichern von Switch-Konfigurationen eine zentrale Aufgabe, die gerne vernachlässigt wird 😉
Dieses PowerShell-Skript automatisiert den Prozess mit Plink. Mit nur minimalen Anpassungen kannst du damit die Konfiguration von mehreren Switchen gleichzeitig abrufen und jeweils in einer Textdatei sichern.
Das Textdokument wird dabei immer nach der IP-Adresse des Switches benannt.
Voraussetzungen
Bevor das Skript verwendet wird, stelle sicher, dass:
plink.exeverfügbar ist (z. B. aus den PuTTY-Tools)- SSH auf den Switchen aktiviert ist
- Eine Textdatei mit den Switch-IP-Adressen existiert (eine IP pro Zeile)
- Gültige SSH-Zugangsdaten vorhanden sind
Skript-Übersicht
Das folgende Skript liest IP-Adressen aus einer Textdatei, stellt eine SSH-Verbindung zu jedem Switch her, führt einen Befehl zur Anzeige der laufenden Konfiguration aus und speichert die Ergebnisse in einer separaten Datei für jede IP-Adresse.
# Pfad zu plink.exe und zur switche.txt
$plinkPath = ".\plink.exe" # Pfad zur plink.exe Datei, die zur SSH-Verbindung genutzt wird
$switchListPath = ".\switche.txt" # Pfad zur Textdatei, die die Liste der Switch-IP-Adressen enthält
# SSH-Anmeldeinformationen
$username = "SSH-USER" # Benutzername für SSH-Anmeldung
$password = "SSH-PASSWORT" # Passwort für SSH-Anmeldung
# Passwort als SecureString umwandeln
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ($username, $securePassword)
# Lesen der IP-Adressen aus der switche.txt
$switchIPs = Get-Content $switchListPath
foreach ($ip in $switchIPs) {
# Befehl zum Abrufen der Konfiguration
$command = "show running-config"
# Dateiname auf Basis der IP
$outputFileName = "$ip.txt"
# Plink-Befehl zum Herstellen der SSH-Verbindung und Abrufen der Konfiguration
$plinkCommand = "& $plinkPath -ssh $username@$ip -pw $password -batch $command"
# Ausführen des Plink-Befehls und Speichern der Ausgabe
Invoke-Expression $plinkCommand | Out-File -FilePath $outputFileName -Encoding utf8
Write-Host "Konfiguration von $ip gespeichert in $outputFileName"
}
````
---
## Detaillierte Erläuterung
### Pfadzuweisung
Das Skript beginnt mit der Festlegung der Pfade zu Plink und zur Datei mit den Switch-IP-Adressen:
```powershell
$plinkPath = ".\plink.exe"
$switchListPath = ".\switche.txt"
Stelle sicher, dass diese Pfade korrekt sind oder passe sie an deine Umgebung an.
Anmeldeinformationen
Die SSH-Anmeldeinformationen werden im Klartext definiert und anschließend in einen SecureString umgewandelt:
$username = "SSH-USER"
$password = "SSH-PASSWORT"
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential ($username, $securePassword)
Jede IP-Adresse wird anschließend in einer Schleife für die SSH-Verbindung genutzt.
Abruf und Speicherung der Konfiguration
Für jede IP-Adresse wird ein Plink-Befehl erzeugt und ausgeführt, um die laufende Konfiguration des Switches abzurufen.
Die Ausgabe wird in einer Datei gespeichert, die nach der IP-Adresse benannt ist.
foreach ($ip in $switchIPs) {
$command = "show running-config"
$outputFileName = "$ip.txt"
$plinkCommand = "& $plinkPath -ssh $username@$ip -pw $password -batch $command"
Invoke-Expression $plinkCommand | Out-File -FilePath $outputFileName -Encoding utf8
Write-Host "Konfiguration von $ip gespeichert in $outputFileName"
}
Anpassungen für andere Switches
Der auf dem Switch ausgeführte Befehl kann leicht angepasst werden.
Ändere einfach:
$command = "show running-config"
zum Beispiel in:
$command = "show version"
um stattdessen die Software-Version der Switches abzurufen.
Schlussfolgerung
Mit diesem Skript lassen sich Switch-Konfigurationen effizient automatisiert sichern und archivieren.
Durch einfache Anpassung des auszuführenden Befehls kann es flexibel an unterschiedliche Anforderungen angepasst werden.
Die Automatisierung spart Zeit und reduziert das Risiko manueller Fehler bei der Konfigurationssicherung.
Kommentare