как заставить scp через snmp работать с роутерами cisco?


10

У меня есть лабораторная установка, где я пытаюсь использовать SCP через SNMP к маршрутизатору cisco. Я нашел некоторую онлайн-документацию, такую ​​как: http://ccie20728.wordpress.com/2008/05/20/get-the-cisco- конфигурация поверх SNMP /

Вот мои настройки высокого уровня. На роутере:

R1(config)# username cisco password cisco
R1(config)# ip domain-name somedomain.com
R1(config)# crypto key generate rsa general-keys modulus 1024
R1(config)# aaa new-model
R1(config)# aaa authentication login cisco local
R1(config)# aaa authorization exec cisco local
R1(config)# ip scp server enable
R1(config)# line vty 0
R1(config)# login authentication cisco
R1(config)# snmp-server community cisco RW

Чтобы маршрутизатор работал в качестве сервера SCP, необходимо включить его с помощью вышеупомянутого cmd. На сервере Ubuntu я установил / запустил openSSH и выполняю следующие команды:

snmpset -c cisco -v 2c <router ip addr> 1.3.6.1.4.1.9.9.96.1.1.1.1.2.111 i 4
snmpset -c cisco -v 2c <router ip addr> 1.3.6.1.4.1.9.9.96.1.1.1.1.3.111 i 4
snmpset -c cisco -v 2c <router ip addr> 1.3.6.1.4.1.9.9.96.1.1.1.1.4.111 i 1
snmpset -c cisco -v 2c <router ip addr> 1.3.6.1.4.1.9.9.96.1.1.1.1.5.111 a <svr ip addr>
snmpset -c cisco -v 2c <router ip addr> 1.3.6.1.4.1.9.9.96.1.1.1.1.6.111 s cisco.txt
snmpset -c cisco -v 2c <router ip addr> 1.3.6.1.4.1.9.9.96.1.1.1.1.7.111 s cisco
snmpset -c cisco -v 2c <router ip addr> 1.3.6.1.4.1.9.9.96.1.1.1.1.8.111 s cisco
snmpset -c cisco -v 2c <router ip addr> 1.3.6.1.4.1.9.9.96.1.1.1.1.14.111 i 1

Затем, чтобы проверить статус, я делаю snmpget и / или snmpwalk через:

snmpwalk -c cisco -v 2c <router ip addr> 1.3.6.1.4.1.9.9.96.1.1.1.1.10.111

когда я запускаю это, я получаю целое число (2), что означает, что он работает, затем он переходит к целому числу (4), что означает, что он потерпел неудачу.

Затем я проверяю причину отказа:

snmpwalk -c cisco -v 2c <router ip addr> 1.3.6.1.4.1.9.9.96.1.1.1.1.13.111

и я получаю целое число (2), что означает «badfilename».

Итак, я пробовал разные перестановки имени файла для строки «.6.111» выше, включая разные расширения файлов, с и без переносов, то же имя файла, что и у запущенных команд конфигурации, даже указанный абсолютный путь к файлу, но ни одна из них не работает.

Я попытался отладить sshdс различными уровнями ведения журнала и не получить вывод из сохраненного / сохраненного файла системного журнала.

Кто-нибудь смог заставить это работать?


вот две другие ссылки , которые я использовал для документации: tools.cisco.com/Support/SNMP/do/... и cisco.com/en/US/tech/tk648/tk362/...
— user1609

Чтобы избежать проблем на сервере SCP, работает ли он, если вы запускаете копию вручную со своего маршрутизатора? Кажется, я помню какой-то TFTP-сервер, который не позволял нам создавать новые файлы во время записи на него, поэтому сначала нам пришлось создать пустой файл на стороне сервера, а затем запустить копию с целевым файлом, указывающим на пустое имя файла
— Даниэль Юсте Арока

да, я тоже пытался это вручную с маршрутизатора на сервер через scp, и он работал нормально. Я был в состоянии скопировать файл на сервер вручную, даже не создавая пустой файл раньше.
— user1609

Вам помог какой-нибудь ответ? Если это так, вы должны принять ответ, чтобы вопрос не появлялся вечно, ища ответ. Кроме того, вы можете предоставить и принять свой собственный ответ.
— Рон Мопин

Ответы:


6

Я только что попробовал это на моем CPE:

[ytti@lintukoto ~]% cat moi2.sh 
#!/bin/sh

snmp="snmpset -v2c -cfoo bu.ip.fi"

$snmp 1.3.6.1.4.1.9.9.96.1.1.1.1.2.9 i 4 \
      1.3.6.1.4.1.9.9.96.1.1.1.1.3.9 i 4 \
      1.3.6.1.4.1.9.9.96.1.1.1.1.4.9 i 1 \
      1.3.6.1.4.1.9.9.96.1.1.1.1.5.9 a 91.198.120.2 \
      1.3.6.1.4.1.9.9.96.1.1.1.1.6.9 s filename \
      1.3.6.1.4.1.9.9.96.1.1.1.1.7.9 s username \
      1.3.6.1.4.1.9.9.96.1.1.1.1.8.9 s password \
      1.3.6.1.4.1.9.9.96.1.1.1.1.14.9 i 4
sleep 10
$snmp 1.3.6.1.4.1.9.9.96.1.1.1.1.14.9 i 6
[ytti@lintukoto ~]% 

Который копирует работающий config (4) в сеть (1), поменяв их местами, вы можете изменить направление (от сети к работающей).

Запустив вышеуказанный скрипт, мой домашний каталог будет иметь файл 'filename', который содержит мой CPE running-config:

[ytti@lintukoto ~]% ls -la filename
ls: cannot access filename: No such file or directory
[2 ytti@lintukoto ~]% ./moi2.sh      
iso.3.6.1.4.1.9.9.96.1.1.1.1.2.9 = INTEGER: 4
iso.3.6.1.4.1.9.9.96.1.1.1.1.3.9 = INTEGER: 4
iso.3.6.1.4.1.9.9.96.1.1.1.1.4.9 = INTEGER: 1
iso.3.6.1.4.1.9.9.96.1.1.1.1.5.9 = IpAddress: 91.198.120.2
iso.3.6.1.4.1.9.9.96.1.1.1.1.6.9 = STRING: "filename"
iso.3.6.1.4.1.9.9.96.1.1.1.1.7.9 = STRING: "username"
iso.3.6.1.4.1.9.9.96.1.1.1.1.8.9 = STRING: "password"
iso.3.6.1.4.1.9.9.96.1.1.1.1.14.9 = INTEGER: 4
iso.3.6.1.4.1.9.9.96.1.1.1.1.14.9 = INTEGER: 6
[ytti@lintukoto ~]% ls -la filename
-rw-r--r-- 1 ytti ytti 16172 Jun 11 00:35 filename
[ytti@lintukoto ~]% 

Помимо того, что @daniel упоминает также, что ваш '14' или 'rowstatus' неверен, вы используете 1 'active', в то время как вы должны использовать 4 'createAndGo'.


только что повторил попытку, изменив «14» на целое число 4 и получив ошибку в пакете, причина: несоответствующее значение. Я даже очистил snmpset с "6", как вы делали каждый раз. кстати, вы смогли заставить его работать с вашими настройками выше?
— user1609 10.06.13

Да. Выше работает отлично на моем 881G работает 15,1 (2) T5. Я добавил вывод скрипта. Если у меня висит этот index / id (9), то я получаю жалобу на «несоответствующее значение», это займет довольно много времени, прежде чем вы сможете его уничтожить. Вы можете проверить с новым индексом / ID, чтобы быть уверенным.
— ytti

попробовал это с другим индексом / идентификатором, все еще не происходит. Я собираюсь попробовать другое устройство. может быть, это конкретное устройство на самом деле не поддерживается. Дело в том, что даже в матрице cisco mib и software это показывает, что эти MIB поддерживаются для текущего IOS, на котором я тестирую.
— user1609 10.06.13

Сейчас это довольно старый MIB, примерно 5 <10 лет. Так что, вероятно, не то. Из IOS CLI выполняет эту работу: «копировать-config-scp: // имя пользователя: пароль @ сервер / имя файла»
— ytti

да, ручное копирование scp с маршрутизатора на сервер работает нормально. Я даже могу создать планировщик kron или сценарий EEM, чтобы сделать это, и он отлично работает, выполняя scp от маршрутизатора до сервера. просто не через snmp ...
— user1609

4

Согласно Cisco SNMP Object Navigator, значение 4 не поддерживается для 1.3.6.1.4.1.9.9.96.1.1.1.1.3. Вместо этого значение 2 означает running-config:

Object  ccCopySourceFileType
OID     1.3.6.1.4.1.9.9.96.1.1.1.1.3
Type    ConfigFileType
1:startupConfig
2:runningConfig
Permission  read-create

Вероятно, поэтому вы получаете ошибку badFileName.

РЕДАКТИРОВАТЬ:

На самом деле кажется, что существует противоречие между SNMP Object Navigator и определением MIB , так как тип для ccCopySourceFileTypeи ccCopyDestFileTypeв ConfigFileTypeсоответствии с определением MIB:

ConfigFileType ::= TEXTUAL-CONVENTION

SYNTAX          INTEGER  {
                        networkFile(1),
                        iosFile(2),
                        startupConfig(3),
                        runningConfig(4),
                        terminal(5),
                        fabricStartupConfig(6) }

И это, кажется, подтверждается ответом YTTI


да, я видел это и в MIB, но даже если я изменил его на целое число 2, я получаю сообщение об ошибке: *** snmpset -c <str> -v 2c <ip> 1.3.6.1.4.1.9.9 .96.1.1.1.1.3.111 i 2 Ошибка в пакете. Причина: неправильное значение (заданное значение недопустимо или каким-либо образом не поддерживается) Сбойный объект: iso.3.6.1.4.1.9.9.96.1.1.1.1.3.111 *** Я тоже пробовал разные варианты этого с .3 и. 4, где, возможно, целое число было различным в любом случае. Я пытаюсь скопировать с маршрутизатора на сервер, который, как я понимаю, запускается cfg в сетевой файл.
— user1609

Я думаю, что противоречие может быть из-за того, что есть два поколения копий Mib. Оригинал был намного проще / тупее и делал только tftp, я не могу вспомнить, но, возможно, в ту эпоху 1 был при запуске, а 2 работал.
— ytti

неплохо подмечено. так что, похоже, изменения были сделаны с помощью обновлений кода.
— user1609 10.06.13

MIB "write-net" был обесценен (по многим причинам) в пользу MIB "config-copy", который все еще является текущим способом сделать это.
— Рикки Бим

3

Я разместил это раньше: http://checkforbees.com/router-backup/

Я думаю, что ваша проблема связана с несколькими snmpset. Вы должны начать с создания записи, чтобы сделать это. [14.xxx = 5 (createAndWait)] Затем вы можете настроить запись по мере необходимости, прежде чем установить для rowStatus значение «1» (активное).

[Примечание: моим сценариям уже десятилетия, поэтому они настроены на tftp.]

[root:pts/6{8}]debian1:/tmp/[01:32 AM]:./test.sh
CISCO-CONFIG-COPY-MIB::ccCopyProtocol.111 = INTEGER: scp(4)
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: 192.168.55.25
CISCO-CONFIG-COPY-MIB::ccCopyFileName.111 = STRING: cisco.txt
CISCO-CONFIG-COPY-MIB::ccCopyUserName.111 = STRING: cisco
CISCO-CONFIG-COPY-MIB::ccCopyUserPassword.111 = STRING: cisco
CISCO-CONFIG-COPY-MIB::ccCopyEntryRowStatus.111 = INTEGER: active(1)
..
Status: successful []
CISCO-CONFIG-COPY-MIB::ccCopyEntryRowStatus.111 = INTEGER: destroy(6)
[root:pts/6{8}]debian1:/tmp/[01:32 AM]:ls -l cisco.txt
-rw-r--r-- 1 root root 15790 Jun 12 01:32 cisco.txt

Я зацикливаюсь на ... 10.111 (состояние), пока оно "работает". Я подозреваю, что вы никогда не удаляли свою запись "111". В противном случае это ваша точная последовательность snmpsets против 2960S с ssh-сервером linux box. (как подсказывает моя подсказка, коробка Debian.)


Я попытался, согласно вашему предложению, все равно не сработало :-(. Я получаю ту же ошибку и причину ошибки. Интересно, может ли это быть какой-то ошибкой для этого конкретного кода IOS. 12.2 (33) SCF4
— user1609

Какое устройство вы используете?
— Рикки Бим

проводил тестирование на CMTS cisco ubr10k, также пытался использовать cisco 3725 (код 12.4T), получая тот же результат
— user1609

badFilenameтакже может указывать на ошибку входа в SSH, но я получаю noConfig(5)за это. (что противоположно тому, что следует сказать)
— Рикки Бим

Я получаю badFileName(2)от 12.4Т. (2960S - 15.x)
— Рикки Бим

0

Проверьте здесь: Как скопировать файлы конфигурации на и с маршрутизаторов Cisco IOS, которые используют SNMP

Измените ccCopyProtocolна желаемый способ перевода:

  1. TFTP
  2. FTP
  3. насос для охладителя реактора
  4. УПП
  5. SFTP

Вот скрипт bash для автоматизации резервного копирования конфигурации.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.