Batch Skript für mehrere Cisco-Switche

mentouu

Cadet 4th Year
Registriert
Aug. 2015
Beiträge
64
Hi,

ich möchte ein Skript mittels Batch erstellen, welches den Computer dazu bringt sich mit mehreren Switchen nacheinander über eine SSH-Verbindung zu verbinden. Die Verbindung wird mittels "plink" hergestellt. Plink ist ein Tool bzw. eine Kommandozeilenerweiterung, mit der man sich über die CMD auf einem Switch über SSH verbinden kann.

Folgendes müsste dann in der Kommandozeile eingegeben werden:
<Pfad plink.exe> -ssh -l <Benutzer d. Switches> -pw <Passwort des Benutzers> <IP-Adresse des Switches>
Anmerkung: Der Benutzer und das dazugehörige Passwort ist auf jedem Switch gleich.


Ich muss nun eine Batch Datei erstellen, die die Zeilen bzw. IP-Adressen einer .csv Datei ausliest, und sich mit jeder IP-Adresse über den obrigen Befehl verbindet und ein Config-Skript auf dem Switch ausführt.

Mein bisheriger Ansatz ist, die .csv-Datei auszulesen und jede Zeile in einem Index eines Arrays in der Batch zu speichern. Das Array sollte dann mit einer foreach-Schleife durchlaufen werden, und sich mit jeder einzelnen IP-Adresse verbinden und ein Konfigurationsskript auf dem Switch ausführen.

Ich kann das bisherige Konzept umsetzen, da ich nur wenig Erfahrung im Scripting mit der Batch habe.
 
Zuletzt bearbeitet:
Habt ihr zufällig eine Cisco Prime im Einsatz ?
Darüber kann man nämlich CLI templates erstellen und auf allen oder bestimmten Switchen ausrollen.
 
Nein leider nicht.
Ergänzung ()

Habe das ganze jetzt mal mit der PowerShell versucht, da ich erfahren habe, dass Batch keine Arrays verarbeiten kann.
Momentan habe ich folgenden Code erstellt (dieser funktioniert aber noch nicht):


$ip_array = Import-Csv -Path 'C:\Marcel\Scripts\IPAdressen.csv' -Delimiter ','
foreach ($ip in $ip_array){
plink.exe -ssh -l BENUTZERNAME -pw PASSWORT $ip
}

In der CSV-Datei "IPAdressen.csv" steht momentan nur eine einzige IP-Adresse (aus Testzwecken).
Das ganze funktioniert aber wie gesagt nicht. Wenn ich "plink.exe -ssh -l BENUTZERNAME -pw PASSWORT <IP>" manuell mit der CMD ausführe, funktioniert das Verbinden auch. Nur über das Skript eben nicht. Denke es liegt ein Fehler beim Auslesen der IP-Adresse aus der CSV vor.

Kann jemand helfen?
 
Zuletzt bearbeitet:
Wie ist die CSV-Datei aufgebaut bzw. was gibt Import-Csv -Path 'C:\Marcel\Scripts\IPAdressen.csv' zurück? Dort müsste die Liste der IPs mit Header aufgeführt werden.

Edit: Soeben deinen Nachbarthread gesehen. Dein Datei ist keine gültige CSV-Datei, es fehlen die Header. Du kannst die Dateiinhalte aber so in ein Array bekommen:

Code:
PS U:\Dokumente\Skripte> get-content .\IP.csv
192.168.1.1,192.168.1.2,192.168.1.3,192.168.1.4,192.168.1.5
PS U:\Dokumente\Skripte> $iparray = Get-Content .\IP.csv
PS U:\Dokumente\Skripte> $iparray = $iparray.split(",")
PS U:\Dokumente\Skripte> $iparray
192.168.1.1
192.168.1.2
192.168.1.3
192.168.1.4
192.168.1.5
PS U:\Dokumente\Skripte>
 
Zuletzt bearbeitet:
Frage hat sich beantwortet. Thread kann geschlossen werden.
 
Zurück
Oben