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 mit diesem Skript die Konfiguration von mehreren Switchen gleichzeitig abrufen und in einer Textdatei sichern. Dabei wird das Textdokument immer mit der IP Adresse des Switch benannt.
Voraussetzungen
Bevor Sie das Skript verwenden, stellen Sie sicher, dass:
- PowerShell installiert und funktionsfähig ist.
- Plink.exe von PuTTY heruntergeladen und im selben Verzeichnis wie das Skript abgelegt ist.
- Eine Textdatei (
switche.txt
) mit den IP-Adressen der zu konfigurierenden Switches vorhanden ist.
Beispiel der Textdatei:
123.123.123.123
234.234.234.234
…
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 # Umwandeln des Passworts in einen SecureString
$credential = New-Object System.Management.Automation.PSCredential ($username, $securePassword) # Erstellen der Anmeldeinformationen
# Lesen der IP-Adressen aus der switche.txt
$switchIPs = Get-Content $switchListPath # Laden der IP-Adressen aus der Datei in eine Liste
foreach ($ip in $switchIPs) {
# Befehl zum Abrufen der Konfiguration
$command = "show running-config" # Der auszuführende Befehl auf dem Switch
# Dateiname auf Basis der IP
$outputFileName = "$ip.txt" # Erstellen eines Dateinamens auf Basis der IP-Adresse
# Plink-Befehl zum Herstellen der SSH-Verbindung und Abrufen der Konfiguration
$plinkCommand = "& $plinkPath -ssh $username@$ip -pw $password -batch $command" # Erstellen des Plink-Befehls für die SSH-Verbindung
# Ausführen des Plink-Befehls und Speichern der Ausgabe
Invoke-Expression $plinkCommand | Out-File -FilePath $outputFileName -Encoding utf8 # Ausführen des Befehls und Speichern der Ausgabe in einer Datei
Write-Host "Konfiguration von $ip gespeichert in $outputFileName" # Ausgabe einer Bestätigung
}
Detaillierte Erläuterung
Pfadzuweisung
Das Skript beginnt mit der Festlegung der Pfade zu Plink und zur Datei, die die Switch-IP-Adressen enthält:
$plinkPath = ".\plink.exe"
$switchListPath = ".\switche.txt"
Stelle sicher, dass diese Pfade korrekt sind, oder passen Sie sie entsprechend Ihrer Umgebung an.
Anmeldeinformationen
Die SSH-Anmeldeinformationen werden im Klartext angegeben und in einen SecureString umgewandelt, um die Sicherheit zu erhöhen:
$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 in einer Schleife durchlaufen und für die SSH-Verbindung genutzt.
Abruf und Speicherung der Konfiguration
Für jede IP-Adresse wird ein Plink-Befehl generiert und ausgeführt, um die laufende Konfiguration des Switches abzurufen. Die Ergebnisse werden in einer Datei gespeichert, die nach der IP-Adresse des Switches 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 Befehl, der auf dem Switch ausgeführt wird, kann leicht angepasst werden, um andere Konfigurationsinformationen abzurufen. Ändern Sie einfach die Zeile:
powershellCode kopieren$command = "show running-config"
zum Beispiel in:
powershellCode kopieren$command = "show version"
um die Software-Version der Switches abzurufen.
Schlussfolgerung
Mit diesem Skript können Netzwerkadministratoren ihre Switch-Konfigurationen effizient verwalten und archivieren. Es lässt sich leicht an verschiedene Bedürfnisse anpassen, indem der auszuführende Befehl geändert wird. Die Automatisierung spart Zeit und minimiert das Risiko manueller Fehler bei der Konfigurationssicherung.
Schreibe einen Kommentar