понедельник, 3 февраля 2020 г.

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

Скрипт резервного копирования настроек роутеров 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

Источник: здесь:

Комментариев нет:

Отправка комментария