пятница, 26 августа 2011 г.

Скрипт резервного копирования настроек роутеров DFL 800, 210, 860e

Генерим SSH ключ для пользователя bacula или root, Открытый ключ загружаем на DFL и добавляем его пользователю admin. На DFLях есть глюк, когда пользователь отличный от admin получает по ssh полномочия auditor. Приходится использовать пользователя admin. разрешаем на DFLе ssh доступ. Вуаля. 


#!/bin/bash
# здесь необходимо указать адреса DFL-ек конфу которых надо бекапить
# в каждой строчке указываю все адреса одной DFLки
DFLSLIST="
222.111.222.111

1.2.3.4
4.5.6.7
"

BACKUPDIR="/tmp/bacula/dfls"
USERNAME=$2
PASSWORD=$3
UP=" --user=$USERNAME --password=$PASSWORD"
LOGFILE="/tmp/bacula/dfls/backupdfls.log"
SCP_PROG="/usr/bin/scp"
SCP_ARGS=" -2 -4 -C -q -B -o ConnectTimeout=5 "
SSH_PROG="/usr/bin/ssh"
SSH_ARGS=" -2 -4 -C -q -o ConnectTimeout=5 "
DATE=`date +%Y%m%d%H%M`

create_backup() {

   if [ ! -d $BACKUPDIR ]
       then
           mkdir -p $BACKUPDIR
   fi

   for DFL in $DFLSLIST
   do
       # echo $SCP_PROG $SCP_ARGS $1@$DFL:config.bak $BACKUPDIR/$DFL-`date +%Y%m%d%H%M`-config.bak
# узнаем по SNMP имя системы, задается в настройках удалённого доступа на DFL
       SYSNAME=`snmpget -Ovq -c public -v 2c $DFL 1.3.6.1.2.1.1.5.0 2>/dev/null`
       if [ $SYSNAME ]; then
           FILENAME=$BACKUPDIR/$SYSNAME-`date +%Y%m%d%H%M`
       else
           FILENAME=$BACKUPDIR/$DFL-`date +%Y%m%d%H%M`
       fi
       if [ ! -f $FILENAME-config.bak ]; then
           echo --- `date +%Y%m%d%H%M` start backing up Name:$SYSNAME Address:$DFL config >> $LOGFILE
           $SCP_PROG $SCP_ARGS $USERNAME@$DFL:config.bak $FILENAME-config.bak >> $LOGFILE 2>&1
       fi
       if [ -f $FILENAME-config.bak ]
       then
           echo --- `date +%Y%m%d%H%M` succes backing up Name:$SYSNAME Address:$DFL config.bak >> $LOGFILE
           echo --- `date +%Y%m%d%H%M` succes backing up Name:$SYSNAME Address:$DFL config.bak
       else
           echo --- `date +%Y%m%d%H%M` error backing up Name:$SYSNAME Address:$DFL config.bak >> $LOGFILE
           echo --- `date +%Y%m%d%H%M` error backing up Name:$SYSNAME Address:$DFL config.bak
       fi
       if [ ! -f $FILENAME-full.bak ]; then
           echo --- `date +%Y%m%d%H%M` start backing up Name:$SYSNAME Address:$DFL full >> $LOGFILE
           $SCP_PROG $SCP_ARGS $USERNAME@$DFL:full.bak $FILENAME-full.bak >> $LOGFILE 2>&1
       fi
       if [ -f $FILENAME-full.bak ]
       then
           echo --- `date +%Y%m%d%H%M` succes backing up Name:$SYSNAME Address:$DFL full.bak >> $LOGFILE
           echo --- `date +%Y%m%d%H%M` succes backing up Name:$SYSNAME Address:$DFL full.bak
       else
           echo --- `date +%Y%m%d%H%M` error backing up Name:$SYSNAME Address:$DFL full.bak >> $LOGFILE
           echo --- `date +%Y%m%d%H%M` error backing up Name:$SYSNAME Address:$DFL full.bak
       fi
       # $SSH_PROG $SSH_ARGS $1@$DFL "shutdown 15 -reboot"
       # $SSH_PROG $SSH_ARGS $1@$DFL "ls -al" > /dev/null
       # echo $DFL DON
   done
}

delete_backup() {
#    for DFL in $DFLSLIST
#       do
#           echo $SCP_PROG $SCP_ARGS $1@$DFL:config.bak $BACKUPDIR/$DFL-`date +%Y%m%d%H%M`-config.bak
#           $SCP_PROG $SCP_ARGS $USERNAME@$DFL:config.bak $BACKUPDIR/$DFL-`date +%Y%m%d%H%M`-config.bak
#           $SCP_PROG $SCP_ARGS $USERNAME@$DFL:full.bak $BACKUPDIR/$DFL-`date +%Y%m%d%H%M`-full.bak
#           $SSH_PROG $SSH_ARGS $USERNAME@$DFL "shutdown 15 -reboot"
#           $SSH_PROG $SSH_ARGS $USERNAME@$DFL "shutdown 2 -reboot" > /dev/null 2>/dev/null
#           echo $DFL DON
#    done
   rm -rf $BACKUPDIR
}

case "$1" in
create)
       create_backup
       ;;

delete)
       delete_backup
      ;;

*)
       echo "Usage: backup_dfls.sh [create|delete] username password "
       exit 1
       ;;
esac
exit 0

1 комментарий:

  1. А я прдпочитаю выгружать не конфиг, а скрипт переноса конфигурации(генерится средствами dfl) - проще потом заливать на резервную/новую дфл, ибо льется без проблем на другие модели серии.

    ОтветитьУдалить