jak uzyskać scp przez snmp do pracy z routerami Cisco?

10

Mam konfigurację laboratoryjną, w której próbuję używać SCP przez SNMP do routera cisco. Znalazłem dokumentację online, taką jak: http://ccie20728.wordpress.com/2008/05/20/get-the-cisco- Configuration-over-snmp /

Oto moja konfiguracja wysokiego poziomu. Na routerze:

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

Aby router działał jako serwer SCP, musisz włączyć powyżej cmd. Na serwerze Ubuntu mam zainstalowany / uruchomiony openSSH i wykonuję następujące polecenia:

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

Następnie, aby sprawdzić, jaki jest status, wykonuję snmpget i / lub snmpwalk poprzez:

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

kiedy to uruchamiam, otrzymuję liczbę całkowitą (2), co oznacza, że ​​jest uruchomiona, a następnie przechodzi do liczby całkowitej (4), co oznacza, że ​​się nie udało.

Następnie sprawdzam przyczynę niepowodzenia:

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

i otrzymuję liczbę całkowitą (2), co oznacza „badfilename”.

Próbowałem więc różnych permutacji nazwy pliku dla „.6.111 łańcucha” powyżej, w tym różnych rozszerzeń plików, z łącznikami i bez nich, takiej samej nazwy pliku jak uruchomione polecenia cmds, nawet podałem bezwzględną nazwę pliku ścieżki, ale żadna z nich nie działa.

Próbowałem debugować sshdz różnymi poziomami rejestrowania i nie otrzymałem danych wyjściowych z zapisanego / zapisanego pliku syslog.

Czy ktoś był w stanie uruchomić to?

użytkownik1609
źródło
oto dwa inne linki, których użyłem do dokumentacji: tools.cisco.com/Support/SNMP/do/… i cisco.com/en/US/tech/tk648/tk362/…
user1609
Czy w celu usunięcia problemów z serwerem SCP działa, jeśli kopię uruchomisz ręcznie z routera? Wydaje mi się, że pamiętam jakiś serwer TFTP, który nie pozwalał nam tworzyć nowych plików podczas pisania na nim, więc najpierw musieliśmy stworzyć pusty plik po stronie serwera, a następnie uruchomić kopię z plikiem docelowym wskazującym pustą nazwę pliku
Daniel Yuste Aroca,
tak, próbowałem tego też ręcznie z routera na serwer przez scp i działało dobrze. Byłem w stanie ręcznie skopiować plik na serwer, nawet bez wcześniejszego tworzenia pustego pliku.
user1609
Czy jakaś odpowiedź ci pomogła? jeśli tak, powinieneś zaakceptować odpowiedź, aby pytanie nie wyskakiwało wiecznie, szukając odpowiedzi. Alternatywnie możesz podać i zaakceptować własną odpowiedź.
Ron Maupin

Odpowiedzi:

6

Właśnie próbowałem tego na moim 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 ~]% 

Które kopie z uruchomionym config (4) do sieci (1), poprzez ich zamianę możesz zmienić kierunek (z sieci na uruchomioną)

Uruchomiony powyżej skryptu mój katalog domowy będzie miał plik „nazwa pliku”, który zawiera mój 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 ~]% 

Oprócz tego, co @daniel wspomina również, że „14” lub „rowstatus” jest nieprawidłowy, używasz 1 „active”, podczas gdy powinieneś używać 4 „createAndGo”.

iti
źródło
po prostu spróbowałem ponownie, zmieniając „14” na liczbę całkowitą 4 i nadal pojawia się błąd w pakiecie. Powód: niespójna wartość. Wyczyściłem nawet snmpset z „6”, tak jak za każdym razem. nawiasem mówiąc, udało ci się sprawić, aby działał z powyższą konfiguracją?
user1609
Tak. Powyżej działa dobrze na moim 881G z 15.1 (2) T5. Dodałem wyjście skryptu. Jeśli mam ten indeks / id (9) w zawieszeniu, wtedy otrzymuję tę samą skargę dotyczącą „niespójnej wartości”, zajmuje to dużo czasu, zanim można go zniszczyć. Dla pewności możesz przetestować nowy indeks / identyfikator.
ytti
próbowałem z innym indeksem / identyfikatorem, wciąż się nie dzieje. Spróbuję użyć innego urządzenia. może to konkretne urządzenie nie jest faktycznie obsługiwane. Rzecz w tym, że nawet w mib cisco i matrycy programowej pokazuje, że te MIB są obsługiwane dla bieżącego IOS, na którym testuję.
user1609
To już dość stara MIB, może jakieś 5 <10 lat. Więc prawdopodobnie nie to. Z interfejsu IOS CLI działa: „kopiuj running-config scp: // nazwa użytkownika: hasło @ serwer / nazwa pliku”
ytti
tak, wykonanie ręcznej kopii SCP z routera na serwer działa dobrze. Mogę nawet utworzyć harmonogram Kron lub skrypt EEM, aby to zrobić i działa dobrze, wykonując scp z routera na serwer. po prostu nie przez snmp ...
user1609
4

Według Cisco SNMP Object Navigator wartość 4 nie jest obsługiwana w 1.3.6.1.4.1.9.9.96.1.1.1.1.3. Zamiast tego wartość 2 oznacza 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

Prawdopodobnie dlatego pojawia się błąd badFileName.

EDYTOWAĆ:

W rzeczywistości wydaje się, że istnieje sprzeczność między SNMP Object Navigator a definicją MIB , jako typ dla ccCopySourceFileTypei ccCopyDestFileTypejest ConfigFileTypei zgodnie z definicją MIB:

ConfigFileType ::= TEXTUAL-CONVENTION

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

I wydaje się to poparte odpowiedzią Ytti

Daniel Yuste Aroca
źródło
tak, widziałem to również w mib, ale nawet jeśli zmienię to na liczbę całkowitą 2, pojawia się błąd: *** snmpset -c <str> -v 2c <ip> 1.3.6.1.4.1.9.9 .96.1.1.1.1.3.111 i 2 Błąd w pakiecie. Powód: errorValue (Ustawiona wartość jest nielegalna lub w jakiś sposób nieobsługiwana) Obiekt nieudany: iso.3.6.1.4.1.9.9.96.1.1.1.1.3.111 *** Próbowałem tego też w różnych kombinacjach .3 i. 4, gdzie być może liczba całkowita była różna w obu przypadkach. Próbuję skopiować z routera na serwer, co, jak rozumiem, to run-cfg do pliku sieciowego.
user1609
Myślę, że sprzeczność może wynikać z tego, że istnieją dwie generacje kopii kopii. Oryginał był o wiele prostszy / głupszy i po prostu tftp, nie pamiętam, ale może w tej erze 1 był start-up i 2 działał.
ytti
trafne spostrzeżenie. więc wygląda na to, że zmiany zostały wprowadzone wraz z aktualizacjami kodu.
user1609
mib „write-net” został zamortyzowany (z wielu powodów) na korzyść mib „config-copy”, który wciąż jest obecnym sposobem na to.
Ricky Beam
3

Opublikowałem to wcześniej: http://checkforbees.com/router-backup/

Myślę, że twój problem dotyczy wielu snmpsetów. Musisz zacząć od utworzenia wpisu, aby to zrobić. [14.xxx = 5 (createAndWait)] Następnie możesz odpowiednio ustawić wpis, zanim ustawisz parametr rowStatus na „1” (aktywny).

[Uwaga: Moje skrypty mają dekady, więc są dostrojone do 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

Zapętlam ... 10.111 (stan), kiedy „działa”. Podejrzewam, że nigdy nie usunąłeś wpisu „111”. W przeciwnym razie są to dokładne sekwencje snmpsets przeciwko 2960S z serwerem ssh w systemie Linux. (jak sugeruje mój monit, pudełko debiana).

Ricky Beam
źródło
Próbowałem zgodnie z twoją sugestią, nadal nie działałem :-(. Otrzymuję ten sam błąd i przyczynę niepowodzenia. Zastanawiam się, czy to musi być jakiś błąd, więc dla tego konkretnego kodu IOS. 12.2 (33) SCF4
user1609
Z jakiego urządzenia korzystasz?
Ricky Beam
robiłem moje testy na cisco ubr10k CMTS, również próbowałem z cisco 3725 (kod 12.4T), uzyskując ten sam wynik
user1609
badFilenamemoże również oznaczać błąd logowania ssh, ale dostaję noConfig(5)za to. (co jest przeciwieństwem tego, co powinno powiedzieć)
Ricky Beam
Dostaję badFileName(2)od 12,4 t. (2960S to 15.x)
Ricky Beam