Mit diesem Script können Massenbackups durchgeführt werden. Das Tool ist mandantenfähig, es legt pro Kunde einen Unterordner an.
Benötigte Pakete
sudo apt-get install snmp tftp-hpa
Mandantenfile
# Hostname,IP,SNMP-RW-Community, (r=running-config,s=startup-config,b=both) Switch1,10.1.1.1,geheim,r Switch2,10.1.1.2,geheim,r
Script
hp_load_cfg.sh
#!/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
Script anwenden
./hp_load_cfg.sh Kunde1.txt
Test
./hp_load_cfg.sh Kunde1.txt ########################################### Save Switch1 - IP: 10.21.73.241 - Running ########################################### SNMPv2-SMI::enterprises.11.2.14.11.5.1.7.1.5.6.0 = INTEGER: 2 Connected to 10.21.73.241 (10.21.73.241), port 69 getting from 10.21.73.241:running-config to Kunde1/Switch1-running-2009-07-22-234538.cfg [netascii] Received 748 bytes in 2.3 seconds [2610 bit/s] SNMPv2-SMI::enterprises.11.2.14.11.5.1.7.1.5.6.0 = INTEGER: 1 ########################################### ########################################### Save Switch2 - IP: 10.21.73.242 - Running ########################################### SNMPv2-SMI::enterprises.11.2.14.11.5.1.7.1.5.6.0 = INTEGER: 2 Connected to 10.21.73.242 (10.21.73.242), port 69 getting from 10.21.73.242:running-config to Kunde1/Switch2-running-2009-07-22-234538.cfg [netascii] Received 737 bytes in 1.5 seconds [3981 bit/s] SNMPv2-SMI::enterprises.11.2.14.11.5.1.7.1.5.6.0 = INTEGER: 1 ###########################################
Das Kundenverzeichnis
ls -la Kunde1 ... -rw-r--r-- 1 sysadmin sysadmin 721 2009-07-22 23:45 Switch1-running-2009-07-22-234538.cfg -rw-r--r-- 1 sysadmin sysadmin 710 2009-07-22 23:45 Switch2-running-2009-07-22-234538.cfg ...
1 Gedanke zu „HP Procurve Bash Backup“