where do you want LAN bugs today?
HP Procurve Bash Backup
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 ...

