Howto für
Ubuntu und
Debian
Mit diesem Script können Massenbackups durchgeführt werden. Das Tool ist mandantenfähig, es legt pro Kunde einen Unterordner an.
sudo apt-get install snmp tftp-hpa
# 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
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
./hp_load_cfg.sh Kunde1.txt
./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
...