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

