Automatisiertes Abrufen und Speichern von Switch-Konfigurationen per PowerShell und Plink

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:

  1. PowerShell installiert und funktionsfähig ist.
  2. Plink.exe von PuTTY heruntergeladen und im selben Verzeichnis wie das Skript abgelegt ist.
  3. 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.

🤞 1x pro Monat unsere News, Tipps und Tutorials gebündelt direkt in dein Postfach!

Wir senden keinen Spam! Erfahre mehr in unserer Datenschutzerklärung.


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.