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“