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

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

user1609
источник
вот две другие ссылки , которые я использовал для документации: 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'.

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

Честер Риман
источник