Использование SNMP v3 для загрузки/выгрузки конфигураций Cisco

Mar 21, 2012 12:46


Задача: загрузить конфигурацию с 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

(Л.)

cisco, mib, snmp

Previous post Next post
Up