HP Procurve Bash Backup

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.

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“

Schreibe einen Kommentar

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.