Если у нас в сети достаточно много коммутаторов, то снимать конфиг с каждого очень затратно по времени. Написал для себя скрипт, который выдирает список 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 и удаляем файл.