Скрипт резервного копирования настроек роутеров 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
#!/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
BACKUPDIR="/tmp/bacula/dfls"
USERNAME=$2
PASSWORD=$3
UP=" --user=$USERNAME --password=$PASSWORD"
LOGFILE="/tmp/bacula/dfls/
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
;;
esacexit 0
if [ $SYSNAME ]; then
FILENAME=$BACKUPDIR/$SYSNAME-
else
FILENAME=$BACKUPDIR/$DFL-`
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
;;
esacexit 0
Источник: здесь:
Комментариев нет:
Отправить комментарий