Backup конфигураций коммутаторов в автоматическом режиме

Если у нас в сети достаточно много коммутаторов, то снимать конфиг с каждого очень затратно по времени. Написал для себя скрипт, который выдирает список IP-адресов коммутаторов из БД системы мониторинга и скармливает этот список скрипту, который по snmp-снимает конфиг и сохраняет в отдельные файлы.

#!/bin/bash

        OF=sw$(date +%Y%m%d).tar.gz
        DIRSW=/srv/tftpboot
        DIRSCR=/opt/scripts/backup
        DIRHOME=/home/user
        MAIL=user@domain.ru
        SCPDIR=backup@backup.domain.ru:/home/backup/backup
        pass=$(cat /root/.mysql)

rm $DIRSW/192*

rm $DIRSCR/error.txt

cat $DIRSCR/dgs.txt| while read line

do
            echo "$line" 
            touch $DIRSW/$line
            sudo chmod -R 777 $DIRSW
                        expect $DIRSCR/dgs3100-24.exp $line
        if [ -s "$DIRSW/$line" ]
                then
                        echo ОК
                else
                        echo Пробуем как DGS-3200-24TG
                        expect $DIRSCR/dgs3100-24TG.exp $line
        if [ -s "$DIRSW/$line" ]
                then
                        echo ОК
                else
                        expect $DIRSCR/dgs-3120.exp $line
                        echo ОК
       if [ -s "$DIRSW/$line" ]
                then
                        echo "$line - backup error" >> $DIRSCR/error.txt
        fi
        fi
        fi
done

mysql -uroot -p$pass -N -e "select ip from interface" zabbix | grep -E 192. | grep -E -w -v 192.168.2.1 | grep -E -w -v 192.168.2.10 | grep -E -w -v 192.168.2.239 > $DIRSCR/sw.txt

cat $DIRSCR/sw.txt| while read line

do
                        echo "$line" 
                        touch $DIRSW/$line
                        sudo chmod -R 777 $DIRSW

                                snmpset -v2c -c vismprivate $line 1.3.6.1.4.1.171.12.1.2.1.1.3.3 a 192.168.2.129
                                snmpset -v2c -c vismprivate $line 1.3.6.1.4.1.171.12.1.2.1.1.4.3 i 2
                                snmpset -v2c -c vismprivate $line 1.3.6.1.4.1.171.12.1.2.1.1.5.3 s $line
                                snmpset -v2c -c vismprivate $line 1.3.6.1.4.1.171.12.1.2.1.1.7.3 i 2
                                snmpset -v2c -c vismprivate $line 1.3.6.1.4.1.171.12.1.2.1.1.8.3 i 3

        if [ -s "$DIRSW/$line" ]
                then
                        echo ОК
                else
                        echo Пробуем как DES-3200

                                snmpset -v2c -c vismprivate $line 1.3.6.1.4.1.171.12.1.2.18.1.1.3.3 a 192.168.2.129
                                snmpset -v2c -c vismprivate $line 1.3.6.1.4.1.171.12.1.2.18.1.1.5.3 s $line
                                snmpset -v2c -c vismprivate $line 1.3.6.1.4.1.171.12.1.2.18.1.1.7.3 s config.cfg
                                snmpset -v2c -c vismprivate $line 1.3.6.1.4.1.171.12.1.2.18.1.1.8.3 i 2
                                snmpset -v2c -c vismprivate $line 1.3.6.1.4.1.171.12.1.2.18.1.1.12.3 i 3

        if [ -s "$DIRSW/$line" ]
                then
                        echo ОК
                else
                        echo Пробуем как DES-1210-10me

                                snmpset -v2c -c vismprivate $line 1.3.6.1.4.1.171.10.75.14.1.3.5.0 a 192.168.2.129
                                snmpset -v2c -c vismprivate $line 1.3.6.1.4.1.171.10.75.14.1.3.6.0 s $line
                                snmpset -v2c -c vismprivate $line 1.3.6.1.4.1.171.10.75.14.1.3.7.0 i 2

        if [ -s "$DIRSW/$line" ]
                then
                sleep 1

        if [ -s "$DIRSW/$line" ]
                then
                echo "$line - backup error" >> $DIRSCR/error.txt
#                       echo "$line - backup error" | mail -s "$line - backup error" $MAIL

        fi
        fi
        fi
        fi
done

tar -czvf $DIRHOME/$OF $DIRSW

scp -p -r -c blowfish -P 22 $DIRHOME/$OF $SCPDIR

rm $DIRHOME/$OF

Принцип работы:
Сначала бекапим гигабитные коммутаторы и коммутаторы, которые нестабильно работают с SNMP. IP адреса храняться в файле dgs.txt и вносятся туда вручную.
Далее делаем выборку из mysql с ip узлов и вносим в файл sw.txt.
Отправляем архив с конфигами по scp и удаляем файл.