Задача: загрузить конфигурацию с TFTP сервера на маршрутизатор.
Настройка маршрутизатора:
snmp-server user ЛОГИН TEST_group v3 auth md5 encrypted 111XXX7B
snmp-server view TEST_view lsystem included
snmp-server view TEST_view ccCopyEntry included
snmp-server group TEST_group v3 auth write TEST_view SNMP_IN
ipv4 access-list SNMP_IN
10 permit ipv4 host X.X.X.X any
Настройка клиента:
SNMP клиент установлен на машине с операционной системой linux (RHEL 5.3)
Для этого нам понадобятся следующие MIB файлы:
CISCO-CONFIG-COPY-MIB
CISCO-SMI
CISCO-ST-TC
получить их можно с официального ресурса компании cisco или по ссылке:
ftp://ftp.cisco.com/pub/mibs/v2/Тут же можно посмотреть supportlist, чтобы узнать, какие MIB поддерживает ваше устройство:
ftp://ftp.cisco.com/pub/mibs/supportlists/ Посмотреть пути поиска файлов MIB можно следующей командой:
# net-snmp-config --default-mibdirs
/root/.snmp/mibs:/usr/share/snmp/mibs
либо:
# snmptranslate -Dinit_mib .1.3 2>&1 |grep MIBDIR
init_mib: Seen MIBDIRS: Looking in '/root/.snmp/mibs:/usr/share/snmp/mibs' for mib dirs ...
Помещаем полученные файлы в любую из этих папок и проверяем, знает ли теперь наш клиент об узлах CISCO-CONFIG-COPY-MIB:
# snmptranslate -IR -On ccCopyFileName
Unknown object identifier: ccCopyFileName
Укажем использовать все мибы:
# snmptranslate -m +ALL -IR -On ccCopyFileName
.1.3.6.1.4.1.9.9.96.1.1.1.1.6
либо через переменные окружения:
# export MIBDIRS=+${HOME}/mibs
# export MIBS=+CISCO-CONFIG-COPY-MIB
тогда можно не использовать ключ -m +ALL:
# snmptranslate -IR -On ccCopyFileName
.1.3.6.1.4.1.9.9.96.1.1.1.1.6
Теперь можно проверить, работает ли все корректно:
#snmptable -v 3 -l authNoPriv -m +ALL -a MD5 -A ПАРОЛЬ -u ЛОГИН CISCO_IP ccCopyTable
CISCO-CONFIG-COPY-MIB::ccCopyTable: No entries
Создадим записи в таблице, описывающей операции копирования на нашем маршрутизаторе:
# snmpset -v 3 -l authNoPriv -m +ALL -a MD5 -A ПАРОЛЬ -u ЛОГИН CISCO_IP ccCopyProtocol.111 i 1 ccCopySourceFileType.111 integer networkFile ccCopyDestFileType.111 integer runningConfig ccCopyServerAddress.111 a "X.X.X.X" ccCopyFileName.111 s "TEST_CISCO_A9K" ccCopyEntryRowStatus.111 integer 4
CISCO-CONFIG-COPY-MIB::ccCopyProtocol.111 = INTEGER: tftp(1)
CISCO-CONFIG-COPY-MIB::ccCopySourceFileType.111 = INTEGER: networkFile(1)
CISCO-CONFIG-COPY-MIB::ccCopyDestFileType.111 = INTEGER: runningConfig(4)
CISCO-CONFIG-COPY-MIB::ccCopyServerAddress.111 = IpAddress: X.X.X.X
CISCO-CONFIG-COPY-MIB::ccCopyFileName.111 = STRING: TEST_CISCO_A9K
CISCO-CONFIG-COPY-MIB::ccCopyEntryRowStatus.111 = INTEGER: createAndGo(4)
Значения полей можно посмотреть опять же на официальном сайте компании cisco:
http://tools.cisco.com/Support/SNMP/do/BrowseOID.do?local=en&translate=Translate&objectInput=1.3.6.1.4.1.9.9.96.1.1.1.1#oidContent При чем, если указать вместо цифрового значения для записи ccCopyProtocol значение tftp, выдавалась ошибка:
Error in packet.
Reason: inconsistentValue (The set value is illegal or unsupported in some way)
Failed object: CISCO-CONFIG-COPY-MIB::ccCopyProtocol.111
Кратко, данная команда указывает маршрутизатору скопировать конфигурацию с TFTP сервера с адресов X.X.X.X из файла TEST_CISCO_A9K в runningConfig.
Значение записи ccCopyEntryRowStatus = 4 означает сразу выполнить операцию копирования.
111 это случайное число.
Соответственно, для копирования конфигурации на TFTP сервер необходимо поменять местами значения networkFile и runningConfig:
# snmpset -v 3 -l authNoPriv -m +ALL -a MD5 -A ПАРОЛЬ -u ЛОГИН CISCO_IP ccCopyProtocol.111 i 1 ccCopySourceFileType.111 integer runningConfig ccCopyDestFileType.111 integer networkFile ccCopyServerAddress.111 a "X.X.X.X" ccCopyFileName.111 s "TEST_CISCO_A9K" ccCopyEntryRowStatus.111 integer 4
CISCO-CONFIG-COPY-MIB::ccCopyProtocol.111 = INTEGER: tftp(1)
CISCO-CONFIG-COPY-MIB::ccCopySourceFileType.111 = INTEGER: runningConfig(4)
CISCO-CONFIG-COPY-MIB::ccCopyDestFileType.111 = INTEGER: networkFile(1)
CISCO-CONFIG-COPY-MIB::ccCopyServerAddress.111 = IpAddress: X.X.X.X
CISCO-CONFIG-COPY-MIB::ccCopyFileName.111 = STRING: TEST_CISCO_A9K
CISCO-CONFIG-COPY-MIB::ccCopyEntryRowStatus.111 = INTEGER: createAndGo(4)
После выполнения необходимо очистить таблицу, либо она сама очистится через несколько минут:
# snmpset -v 3 -l authNoPriv -m +ALL -a MD5 -A ПАРОЛЬ -u ЛОГИН CISCO_IP ccCopyEntryRowStatus.111 i destroy
CISCO-CONFIG-COPY-MIB::ccCopyEntryRowStatus.111 = INTEGER: destroy(6)
Использовались ресурсы:
http://bodgitandscarper.co.uk/networks/using-snmp-to-trigger-cisco-tftp-backups/ http://http://www.cisco.com/en/US/tech/tk648/tk362/technologies_configuration_example09186a0080094aa6.shtml http://net-snmp.sourceforge.net/wiki/index.php/TUT:Using_and_loading_MIBS (Л.)