QTECH проверка firmware
Когда сеть оператора связи со временем становится всё больше и больше, то всё труднее становится за ней уследить. В таком случае сотрудники отдела информационных технологий компании или интегратор в помощь пишут срипты по управлению и мониторингу. Мне довелось в своё время писать большое количество скриптов для оборудования торговой марки D-Link, и теперь я их понемногу переписываю под оборудование QTECH (QSW-3900 и QSW-2900). Так что со временем не всеми, но частью поделюсь.
Начнём со скрипта выводящего информацию по прошивке и bootroom коммутаторов:
#!/usr/local/bin/bash - # Функция логирования function logging() { echo "$1 $2" >> $WORK_DIR /log/swversion .log echo -e $1 '\t' $2 } # Проверка ввода переменных if [ ! $ # == 1 ]; then echo "Информация: Проверка ввода данных." echo "Использование: swversion <Список IP Коммутаторов>" exit 1 fi WORK_DIR= "/usr/local/acl" COMMUNITY= "SNMP_RO" SWITCH_IP_LIST= "$1" # Проверка файла со списком IP адресов на существование if [ ! -f $SWITCH_IP_LIST ]; then echo "Файл не найден!" exit 1 fi # Удаление старого файла со статистикой rm -rf $WORK_DIR /stat/swversion .log # Вывод построчно IP адресов коммутаторов cat $WORK_DIR/$SWITCH_IP_LIST | sort -t . -k 1,1n -k 2,2n -k 3,3n -k 4,4n | uniq | while read SWITCH_IP do # Проверяем доступность коммутатора ping -c 1 $SWITCH_IP > /dev/null 2>&1 if [[ ! $? == 0 ]]; then logging $SWITCH_IP "NO_PING" else SWITCH=`snmpget -v2c -c $COMMUNITY $SWITCH_IP 1.3.6.1.2.1.1.5.0` if [[ $SWITCH == *QTECH* ]]; then SWITCH_SOFT_VERSION=`snmpget -Ov -Oq -v2c -c $COMMUNITY $SWITCH_IP .1.3.6.1.4.1.27514.1.2.1.1.2.2.0 | sed 's/"//g' ` SWITCH_HARD_VERSION=`snmpget -Ov -Oq -v2c -c $COMMUNITY $SWITCH_IP .1.3.6.1.4.1.27514.1.2.1.1.2.8.0 | sed 's/"//g' ` SWITCH_BOOT_VERSION=`snmpget -Ov -Oq -v2c -c $COMMUNITY $SWITCH_IP .1.3.6.1.4.1.27514.1.2.1.1.2.9.0 | sed 's/"//g' ` SWITCH_MAC=`snmpwalk -Ov -Oq -v2c -c $COMMUNITY $SWITCH_IP .1.3.6.1.4.1.27514.1.2.1.1.1.1 | sed 's/"//g' ` echo -e $SWITCH_IP '\t' $SWITCH_SOFT_VERSION '\t' $SWITCH_HARD_VERSION '\t' $SWITCH_BOOT_VERSION '\t' $SWITCH_MAC >> $WORK_DIR /stat/swversion .log echo -e $SWITCH_IP '\t' $SWITCH_SOFT_VERSION '\t' $SWITCH_HARD_VERSION '\t' $SWITCH_BOOT_VERSION '\t' $SWITCH_MAC else logging $SWITCH_IP "SNMP_OFF" fi fi done exit 0 |
Файл с IP адресами коммутаторов имеет вид (3900.csv):
xxx.yyy.zzz.2 xxx.yyy.zzz.6 xxx.yyy.zzz.10 xxx.yyy.zzz.14 xxx.yyy.zzz.18 xxx.yyy.zzz.22 xxx.yyy.zzz.26 xxx.yyy.zzz.30 xxx.yyy.zzz.38 xxx.yyy.zzz.34 xxx.yyy.zzz.42 xxx.yyy.zzz.46 xxx.yyy.zzz.50 xxx.yyy.zzz.54 xxx.yyy.zzz.58 xxx.yyy.zzz.62 |
Выполнение скрипта сводится к указанию файла со списком IP адресов коммутаторов:
[root@EXAMPLE /usr/local/acl ] # ./swversion 3900.csv xxx.yyy.zzz.2 QTECH QSW-3900 V100R001B01D004P001SP4 V1.0 V1.37 00 1F CE 10 39 4C xxx.yyy.zzz.6 QTECH QSW-3900 V100R001B01D004P001SP4 V1.0 V1.37 00 1F CE 10 39 56 xxx.yyy.zzz.10 QTECH QSW-3900 V100R001B01D004P001SP4 V1.0 V1.37 00 1F CE 10 39 50 xxx.yyy.zzz.14 QTECH QSW-3900 V100R001B01D004P002SP2 V1.0 V1.38 00 1F CE 10 39 4F xxx.yyy.zzz.18 QTECH QSW-3900 V100R001B01D004P001SP4 V1.0 V1.37 00 1F CE 10 39 4A xxx.yyy.zzz.22 QTECH QSW-3900 V100R001B01D004P001SP4 V1.0 V1.37 00 1F CE 10 39 58 xxx.yyy.zzz.26 QTECH QSW-3900 V100R001B01D004P001SP4 V1.0 V1.37 00 1F CE 10 39 59 xxx.yyy.zzz.30 NO_PING xxx.yyy.zzz.34 QTECH QSW-3900 V100R001B01D004P001SP4 V1.0 V1.37 00 1F CE 10 39 5B xxx.yyy.zzz.38 QTECH QSW-3900 V100R001B01D004P001SP4 V1.0 V1.37 00 1F CE 10 39 4E xxx.yyy.zzz.42 QTECH QSW-3900 V100R001B01D004P001SP4 V1.0 V1.37 00 1F CE 10 39 52 xxx.yyy.zzz.46 NO_PING xxx.yyy.zzz.50 NO_PING xxx.yyy.zzz.54 QTECH QSW-3900 V100R001B01D004P001SP4 V1.0 V1.37 00 1F CE 10 39 55 xxx.yyy.zzz.58 QTECH QSW-3900 V100R001B01D004P001SP4 V1.0 V1.37 00 1F CE 10 39 57 xxx.yyy.zzz.62 QTECH QSW-3900 V100R001B01D004P001SP4 V1.0 V1.37 00 1F CE 10 39 47 |
По полученными данным видно, что большая часть оборудования имеет старую версию прошивки и bootroom. Теперь можно приступить к обновлению программного обеспечения коммутаторов, что тоже делается через скрипт (о нём я расскажу немного позже).