HP ProCurve Switche Automatisches Backup der Konfiguration Version 1
Aus znilwiki
So, ich sollte mal eben schnell ein automatisches Backup für die Konfiguration von 3 HP-ProCurve Switchen bauen.
Ein "All-In-One" Tool hatte ich nicht gefunden, es gibt eine Windows-Lösung: https://github.com/agreenbhm/GhittoPCM die mir aber zu Aufwendig war bei der Einrichtung.
Ich bin dann bei dieser Lösung gelandet: http://www.lanbugs.de/netzwerktechnik/hp-procurve-bash-backup/
Und die habe ich wie folgt umgesetzt:
Ausgangslage
Kunde mit Windows-Umgebung wollte ein automatisches Backup seiner Switch-Konfiguration.
Es gab dann doch einen Linux-Server - den Zabbix-Server (geht auch mit Zabbix-Proxy)
Das Backup sollte aber auf einem Windows-Server landen.
Nachfolgend beschreibe wie ich
- Auf dem Linux Server mir die Windows-Freigabe mounte
- ein tägliches Backup der Switch-Konfiguration durchführe
Freigabe erstellen und beim Start mounten
Auf meinem Zielserver (Windows) habe ich die Freigabe SwitchConfigs
erstellt und die Einstellungen so angepasst das der Domänenbenutzer "ZNIL\Administrator" auf diese Freigabe lesend und schreibend zugreifen kann.
Der Server hat die IP 192.168.1.111, die Freigabe heisst also
\\192.168.1.111\SwitchConfigs
Gemäß dieser Anleitung habe ich es so eingerichtet das diese Freigabe bei jedem Start des Linux-Servers(!) automatisch gemountet wird:
Der Pfad auf dem Linux-Server ist bei mir
/SwitchConfigs
Switche vorbereiten
Auf allen Switchen habe ich in den SNMP-Einstellungen eine neue Community-Group erstellt die lesend und Schreiben zugreifen darf.
Diese Gruppe heisst bei mir:
BackupConfig
Konfigurationsdatei erstellen
Auf dem Linux-Server erstellen wir nun eine Datei in der alle Switche stehen die gesichert werden sollen. Diese Packe ich direkt in den Pfad meines Sicherungsordners (die Datei liegt also in der Windows-Freigabe):
nano /SwitchConfigs/HP-Switche.txt
mit folgendem Inhalt:
# Hostname,IP,SNMP-RW-Community, (r=running-config,s=startup-config,b=both) SwitchServerraum,192.168.1.201,BackupConfig,r SwitchHausA,192.168.1.202,BackupConfig,r SwitchHausB,192.168.1.203,BackupConfig,r
Für jeden Switch eine neue Zeile!
- 1. Eintrag ist der Name der zum speichern genommen werden soll
- 2. Eintrag ist die IP-Adresse des Switches
- 3. Eintrag ist der Name der Community-Group die wir auf den Switchen angelegt haben
- 4. Eintrag besagt das wir die running-config haben wollne - also die gerade laufende Konfiguration
Sicherungsscript einrichten
Zunächst die Vorraussetzungen installieren:
apt-get install snmp tftp-hpa
Dann erstellen wir das Backup-Skript:
nano /SwitchConfigs/hp_load_cfg.sh
und kopieren das Skript von dieser Seite hinein: http://www.lanbugs.de/netzwerktechnik/hp-procurve-bash-backup/
Alternativ hier noch mal der Inhalt:
#!/bin/bash
#################################################################
# hp_load_cfg.sh - Load HP Procurve Configs via TFTP #
#################################################################
# Version 1.0.0 #
# Written by Maximilian Thoma (c) 2009 - admin@lanbugs.de #
#################################################################
# for Ubuntu/Debian - needed snmp and tftp-hpa package #
#################################################################
# Vars
DATE_TOKEN=$(date +"%Y-%m-%d-%H%M%S")
KUNDE=$(echo $1 | awk -F. '{print $1}')
declare K_DIR=$KUNDE
# Check ob Kundenverzeichnis existiert
if [ ! -e $K_DIR ]; then
mkdir $K_DIR; fi
processLine(){
line="$@"
char_1=${line:0:1}
if [ $char_1 != '#' ]; then
### echo $line
# Variablen laden
SwitchNAME=$(echo $line | awk -F, '{print $1}')
SwitchIP=$(echo $line | awk -F, '{print $2}')
SwitchSNMP=$(echo $line | awk -F, '{print $3}')
SwitchSAV=$(echo $line | awk -F, '{print $4}')
# Nur running-config
if [ $SwitchSAV == 'r' ]; then
echo "###########################################"
echo "Save $SwitchNAME - IP: $SwitchIP - Running "
echo "###########################################"
snmpset -v 2c -c $SwitchSNMP $SwitchIP 1.3.6.1.4.1.11.2.14.11.5.1.7.1.5.6.0 i 2
tftp $SwitchIP -v -c get running-config $K_DIR/$SwitchNAME-running-$DATE_TOKEN.cfg
snmpset -v 2c -c $SwitchSNMP $SwitchIP 1.3.6.1.4.1.11.2.14.11.5.1.7.1.5.6.0 i 1
echo "###########################################"
fi
# Nur startup-config
if [ $SwitchSAV == 's' ]; then
echo "###########################################"
echo "Save $SwitchNAME - IP: $SwitchIP - Startup "
echo "###########################################"
snmpset -v 2c -c $SwitchSNMP $SwitchIP 1.3.6.1.4.1.11.2.14.11.5.1.7.1.5.6.0 i 2
tftp $SwitchIP -v -c get startup-config $K_DIR/$SwitchNAME-startup-$DATE_TOKEN.cfg
snmpset -v 2c -c $SwitchSNMP $SwitchIP 1.3.6.1.4.1.11.2.14.11.5.1.7.1.5.6.0 i 1
echo "###########################################"
fi
# Beides
if [ $SwitchSAV == 'b' ]; then
echo "###########################################"
echo "Save $SwitchNAME - IP: $SwitchIP - Both "
echo "###########################################"
snmpset -v 2c -c $SwitchSNMP $SwitchIP 1.3.6.1.4.1.11.2.14.11.5.1.7.1.5.6.0 i 2
tftp $SwitchIP -v -c get running-config $K_DIR/$SwitchNAME-running-$DATE_TOKEN.cfg
tftp $SwitchIP -v -c get startup-config $K_DIR/$SwitchNAME-startup-$DATE_TOKEN.cfg
snmpset -v 2c -c $SwitchSNMP $SwitchIP 1.3.6.1.4.1.11.2.14.11.5.1.7.1.5.6.0 i 1
echo "###########################################"
fi
fi
}
FILE=""
if [ "$1" == "" ]; then
FILE="/dev/stdin"
else
FILE="$1"
if [ ! -f $FILE ]; then
echo "$FILE : does not exists"
exit 1
elif [ ! -r $FILE ]; then
echo "$FILE: can not read"
exit 2
fi
fi
BAKIFS=$IFS
IFS=$(echo -en "\n\b")
exec 3<&0
exec 0<$FILE
while read line
do
processLine $line
done
exec 0<&3
IFS=$BAKIFS
exit 0
Da es auf der Windows-Freigabe liegt müssen wir es nicht extra ausführbar machen.
Ansonsten ein
chmod +x /SwitchConfigs/hp_load_cfg.sh
Test!
Nun Testen wir das Backup mit
/SwitchConfigs/hp_load_cfg.sh /SwitchConfigs/HP-Switche.txt
Er legt uns einen neuen Unterordner
/SwitchConfigs/HP-Switche
an in welchen er für jeden Switch eine Konfigurationsdatei legt - mit einem Suffix aus Datum und Uhrzeit.
Rufen wir das Script noch einmal auf ommen weitere Dateien dazu.
Automatisches Backup
Wir rufen
crontab -e
auf und fügen folgende Zeile an:
0 7 * * * /SwitchConfigs/hp_load_cfg.sh /SwitchConfigs/HP-Switche.txt
Jeden Morgen um 07:00 hr macht er nun ein Backup
Anzahl der Kopien beschränken
Wenn wir an dieser Stelle aufhören würden, würde er uns bis zum jüngsten Tag Kopien der Konfigs machen.
Wir wollen aber nur die letzten 30 Tage behalten. Also bearbeiten wir noch mal die Crontab und fügen diese Zeile hinzu:
0 8 * * * /usr/bin/find /SwitchConfigs/HP-Switche -mtime +30 \( -iname ".cfg" \) -exec rm {} \;