krodon
Goto Top

Massenfirmwareupdates bei HP Switchen

Hallo,

ich habe ein ganzes Rudel von HP Switchen, bei denen ich Firmware Updates machen muss.
Händisch ist es ganz schön lästig, gibt es ein Tool, mit dem man es automatisieren kann?

Content-Key: 599716

Url: https://administrator.de/contentid/599716

Printed on: April 19, 2024 at 09:04 o'clock

Member: em-pie
em-pie Aug 27, 2020 at 16:02:30 (UTC)
Goto Top
Moin,

Suche mal nach HPs IMC
https://community.hpe.com/t5/aruba-provision-based/centralized-switch-ma ...

Selbst kenne ich die Software nicht, kann also keine Erfahrung zu geben

Gruß
em-pie
Member: chgorges
chgorges Aug 27, 2020 at 19:07:14 (UTC)
Goto Top
Hi,
HP IMC läuft nicht mehr mit dem Aruba OS, dafür braucht es Aruba Central. Ist im Vergleich zu Cisco lizenztechnisch auch ein Schnäppchen.
Member: MysticFoxDE
MysticFoxDE Aug 28, 2020 at 09:12:31 (UTC)
Goto Top
Moin Krodon,

kannst du ohne viel Schnickschnack auch ganz einfach per Power-Shell zusammencripten.

Im folgenden Beitrag ist die Vorgehensweise ganz gut beschrieben.

https://deployhappiness.com/update-switch-firmware-with-powershell/

Sag bescheid, wenn dir noch etwas unklar ist.

Grüsse aus BaWü

Alex
Member: krodon
krodon Aug 28, 2020 at 15:57:58 (UTC)
Goto Top
Hallo,

danke für das Script, die Configs zu sichern finde auch sehr gut!
Das Erstellen der CSV Datei habe ich noch nicht ganz verstanden.

Verify that your headers are: Name, IPAddress, Model

Was soll der Name sein? Ich habe keine Stelle im Script gefunden dies sie nutzt.

Würde Die Datei, in etwa so aussehen?

Name,10.42.1.31,ProCurve Switch 2610
Name,10.42.1.32,ProCurve Switch 2620

VG

Krodon
Member: em-pie
em-pie Aug 28, 2020 updated at 16:07:41 (UTC)
Goto Top
Doch.

Das Modell (Spalte model) wird doch geprüft:

If($Switch.model -like ...

Würde hier aber gegen die Modellnummer J4711A prüfen und noch ProCurve2650 o.ä...

Gruß
Member: krodon
krodon Aug 28, 2020 at 16:19:40 (UTC)
Goto Top
Hallo,

ich meinte den Eintrag Name, oder soll es so aussehen?

J4711A ,10.42.1.31,ProCurve Switch 2610
J4722A ,10.42.1.32,ProCurve Switch 2620

VG

Krodon
Member: em-pie
em-pie Aug 28, 2020 at 16:24:31 (UTC)
Goto Top
Ach sorry.

Der ist vermutlich nur für „dich“, zum identifizieren der Switche in der csv...

Dann wäre
Switch01;10.20.30.1;J4711A
Switch02;10.20.30.2;J4711B
passender

Ich würde mir im Vorfeld aber in jedenfalls die FW-Version aller Switche exportieren. Damit du einen Überblick hast, auf welchen Versionen die aktuell laufen. Ggf. Musst du einige erst auf eine Mindest-Version Hochziehen, bevor du per „Giesskanne“ alle aktualisierst
Member: krodon
krodon Aug 28, 2020 at 16:45:13 (UTC)
Goto Top
Danke für den Tipp!
Das 1. Mal muss ich sie wohl händisch auf aktuell bringen, dann kann ich es automarisieren face-wink
Während dem kann ich aber den Umgang mit dem Script testen, indem ich jeden einzeln, Schritt für Schritt aktuell mache
Member: MysticFoxDE
MysticFoxDE Aug 29, 2020 updated at 06:57:16 (UTC)
Goto Top
Moin Krodon,

die erste Spalte der Name "name", ist für dich selbst zur Identifizierung der Switche gedacht.
Die zweite Spalte, die IP "IPAddress" ist denke ich selbsterklärend.
Die dritte Spalte, das Model, kannst du ebenfalls halbwegs frei benennen. Du musst das im Script lediglich an der entsprechenden Stellen richtig anpassen, damit auch die richtige Firmware für den Switch gezogen werden kann, die sie aber meistens nicht vom Switch Typ (2530-24G) zu Switch Typ (2530-48G) unterscheidet, sondern eher von Switch Serie (2530-xx) zu Switch Serie (2540-xx).

Ich mache dir mal ein Beispiel anhand von vier Switchen.

switchlist.csv:

name, IPAdress, Model Type

HPSW-EG01 172.16.250.1 2530-X1 2530-24G
HPSW-EG02 172.16.250.2 2530-X1 2530-48G
HPSW-OG01 172.16.250.3 2540-X1 2540-24G
HPSW-OG02 172.16.250.4 2540-X1 2540-48G


Script:
$Time     = "23:00"  
$Server   = "192.168.0.10"  
$Username = "admin"  
$Password = "password"  
 
Set-Location C:\putty\
 
$SwitchList = Import-Csv .\switchlist.csv
 
foreach ($Switch in $SwitchList){
 
     if ($Switch.model -eq "2530-X1"){  
    .\kitty.exe $Switch.IPAddress -ssh -v -l $Username -pw $Password -cmd "\s02 \n Copy tftp flash $Server Firmware_für_2530-X1.swi \n y \n \s02 \n wri mem \n reload at $Time \n y \n logout \n y" -send-to-tray  
    }
 
    if ($Switch.model -eq "2540-X1"){  
    .\kitty.exe $Switch.IPAddress -ssh -v -l $Username -pw $Password -cmd "\s02 \n Copy tftp flash $Server Firmware_für_2540-X1.swi \n y \n \s02 \n wri mem \n reload at $Time \n y \n logout \n y" -send-to-tray  
    }
   sleep 3
}

"Firmware_für_2530-X1.swi" & "Firmware_für_2530-X1.swi" muss noch entsprechend dem einzuspielenden Firmwaredateinamen angepasst werden.

Eine vorherige Sicherung der Switch Konfiguration würde ich dir auf jeden Fall empfehlen.

Grüsse aus BaWü

Alex
Member: MysticFoxDE
MysticFoxDE Aug 29, 2020 at 06:59:28 (UTC)
Goto Top
Moin Kordon,

von wie vielen Switchen sprechen wir hier überhaupt?

Gruss Alex
Member: krodon
krodon Aug 30, 2020 updated at 16:56:38 (UTC)
Goto Top
Hallo Alex,

es sind an die 70 Switche, zum Glück wenige Modelle und alle von HP.
Die Sicherung der Konfiguration macht viel Sinn, das Script habe ich auch gesehen.
Wenn vergessen wurde auf speichern zu drücken, welche Config wird gespeichert?

VG

Edi
Member: MysticFoxDE
MysticFoxDE Aug 31, 2020 at 07:21:21 (UTC)
Goto Top
Moin Edi,

es sind an die 70 Switche, zum Glück wenige Modelle und alle von HP.

😲, OK die würde ich auch nicht alle von Hand updaten wollen.

Wenn vergessen wurde auf speichern zu drücken, welche Config wird gespeichert?

Das Skript speichert die startup-config und nicht die running-config, somit würden die nicht gespeicherten Konfigurationen nicht mitgesichert werden.

Das sollte aber kein grosses Problem sein, du musst das Backupskript lediglich folgend abändern.

if ((Test-Path \\$Server\c$\TFTP-Root\$Filepath) -eq $false){New-Item -ItemType Directory -Name $Switch.NodeName -Path \\$Server\c$\TFTP-Root\Configs\}
 .\kitty.exe $Switch.IPAddress -ssh -v -l $Username -pw $Password -cmd "\s05 \n write memory \n Copy Startup-Config tftp $Server $Filepath$FileName \n y \n logout \n y \n y \n y"  
 sleep -Seconds 2
 }

So wird vor der Sicherung auf jedem Switch die running-config in die startup-config geschrieben.

Wenn du das Backupskript folgend änderst, dann sichert es direkt die running-config der switche.

if ((Test-Path \\$Server\c$\TFTP-Root\$Filepath) -eq $false){New-Item -ItemType Directory -Name $Switch.NodeName -Path \\$Server\c$\TFTP-Root\Configs\}
 .\kitty.exe $Switch.IPAddress -ssh -v -l $Username -pw $Password -cmd "\s05  \n Copy running-config tftp $Server $Filepath$FileName \n y \n logout \n y \n y \n y"  
 sleep -Seconds 2
 }


Grüsse aus BaWü

Alex
Member: krodon
krodon Sep 01, 2020 at 14:20:46 (UTC)
Goto Top
Hallo Alex,

leider funktioniert es nicht face-sad

ich habe als Kitty die The uncompressed version of KiTTY genommen.
Die switchlist.csv

SW-024-001;10.24.1.31;JG926A

Mein Backup script

$Server   = "10.1.1.96"  
$Username = "admin"  
$Password = "XXXXXXXXX"  
$Date = (Get-Date -UFormat "%Y-%m-%d")  

Set-Location C:\Putty\

$SwitchList = Import-Csv .\switchlist.csv | sort NodeName 

foreach ($Switch in $SwitchList){
$FilePath = "Configs\" + $Switch.NodeName + "\"   
$FileName = $Switch.IPAddress + "_" + $Date +".txt"  

if ((Test-Path \\$Server\c$\TFTP\$Filepath) -eq $false){New-Item -ItemType Directory -Name $Switch.NodeName -Path \\$Server\c$\TFTP\Configs\}
 .\kitty.exe $Switch.IPAddress -ssh -v -l $Username -pw $Password -cmd "\s05 \n write memory \n Copy Startup-Config tftp $Server $Filepath$FileName \n y \n logout \n y \n y \n y"  
 sleep -Seconds 2
 }
_1
_2
Member: em-pie
em-pie Sep 01, 2020 at 15:19:00 (UTC)
Goto Top
Läuft denn der TFtP-Server?

Kannst du die Configuration manuell, also via CLI auf dem Switch, sichern oder woran hapert es?

Siehst den im Log des Switches, dass es eine Anmeldung gab?

 sh log -r
Member: krodon
krodon Sep 01, 2020 at 15:50:40 (UTC)
Goto Top
Der TFTP wird nicht benötigt, es wird ein \\$Server\c$\TFTP\$Filepath
Testen kann ich erst morgen
Member: em-pie
em-pie Sep 01, 2020, updated at Sep 02, 2020 at 06:57:10 (UTC)
Goto Top
Du weißt, was die Scripte machen?
Schaue dir das bitte noch mal genau an!

Hinweis: mit Skitty setzt du Befehle automatisiert ab, die du normalerweise selbst und manuell eintippen würdest.

Und einen TFTP brauchst du sehr wohl, willst du die config ja per TFTP an deinen Server senden!

Und ein Switch kann nichts mit UNC-Pfaden anfangen


Also nicht immer alles blind kopieren und nur partiell Dinge tauschen, sondern auch prüfen, was da eigentlich passiert!

Edit: Typo
Member: MysticFoxDE
MysticFoxDE Sep 02, 2020 at 06:49:15 (UTC)
Goto Top
Moin Krodon,

Der TFTP wird nicht benötigt, es wird ein \\$Server\c$\TFTP\$Filepath
Testen kann ich erst morgen

auch wenn em-pie, die Antwort etwas schroff geschrieben hat, er hat recht damit.

Du benötigst auf jeden Fall einen TFTP Server.
Ich habe heute jedoch keine Zeit dies ausführlich zu erklären, daher bitte ich dich die Beschreibung des Links den ich oben geschickt habe,
nochmals genau zu lesen und alle beschriebenen Punkte auch 1:1 zu befolgen.

Jetzt muss ich aber weiter flitzen.

Grüsse aus BaWü

Alex
Member: krodon
krodon Sep 02, 2020, updated at Apr 21, 2022 at 13:58:01 (UTC)
Goto Top
Hallo Alex,

ich bin bin ein Stück weiter, ich habe mal Echos eingebaut um zu sehen was er tut.
Das Problem lag an der *.csv, erst als ich einen 2. Switch hinzugefügt habe, läuft es bedingt und öffnet mit die GUI von Kitty.
Welche Version muss ich benutzen, ich habe beide Markierten ausprobiert

_3

Muss ich die Kitty.ini ändern?

VG

Edi

P.S. nun bin ich ein Stück weiter, wenn in Kitty den Switch angebe und doppelklicke, sieht man, dass die Befehle abarbeitet werden, jedoch mit Fehler

<SW-024-001> write memory
            ^
 % Unrecognized command found at '^' position.  
<SW-024-001> Copy Startup-Config tftp 10.1.1.96 Configs\_2020-09-02.txt
            ^
 % Unrecognized command found at '^' position.  
<SW-024-001> y
            ^
 % Unrecognized command found at '^' position.  
<SW-024-001> logout
            ^
 % Unrecognized command found at '^' position.  
<SW-024-001> y
            ^
 % Unrecognized command found at '^' position.  
<SW-024-001> y

Es handelt sich um einen JG926A, ist er zu alt das er die Befehle nicht kennt?