Wie bekomme ich SCP über SNMP, um mit Cisco-Routern zu arbeiten?

10

Ich habe ein Labor-Setup, in dem ich versuche, SCP über SNMP für einen Cisco-Router zu verwenden. Ich habe einige Online-Dokumentationen gefunden, z. B.: Http://ccie20728.wordpress.com/2008/05/20/get-the-cisco- Konfiguration-über-snmp /

Hier ist mein High-Level-Setup. Auf dem Router:

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

Damit der Router als SCP-Server fungiert, muss er mit dem obigen cmd aktiviert werden. Auf einem Ubuntu-Server habe ich openSSH installiert / ausgeführt und mache diese cmds:

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

Um dann den Status zu überprüfen, mache ich ein snmpget und / oder einen snmpwalk über:

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

Wenn ich dies ausführe, erhalte ich die Ganzzahl (2), was bedeutet, dass sie ausgeführt wird, und gehe dann zur Ganzzahl (4), was bedeutet, dass sie fehlgeschlagen ist.

Dann überprüfe ich den Grund für den Fehler:

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

und ich bekomme die ganze Zahl (2), was "badfilename" bedeutet.

Daher habe ich oben verschiedene Permutationen eines Dateinamens für ".6.111 string" ausprobiert, einschließlich verschiedener Dateierweiterungen mit und ohne Bindestrichen, denselben Dateinamen wie beim Ausführen von config cmds, sogar einen angegebenen absoluten Pfaddateinamen, aber keiner scheint zu funktionieren.

Ich habe versucht, das sshdmit verschiedenen Protokollierungsstufen zu debuggen und keine Ausgabe von der gespeicherten / gespeicherten Syslog-Datei zu erhalten.

Hat jemand das zum Laufen gebracht?

user1609
quelle
Hier sind zwei weitere Links, die ich für die Dokumentation verwendet habe: tools.cisco.com/Support/SNMP/do/… und cisco.com/de/US/tech/tk648/tk362/…
user1609
Funktioniert es, um Probleme auf dem SCP-Server zu verwerfen, wenn Sie die Kopie manuell von Ihrem Router ausführen? Ich erinnere mich an einen TFTP-Server, auf dem wir beim Schreiben keine neuen Dateien erstellen konnten. Daher mussten wir zuerst eine leere Datei auf der Serverseite erstellen und dann die Kopie mit der Zieldatei ausführen, die auf den leeren Dateinamen zeigt
Daniel Yuste Aroca
Ja, ich habe dies auch manuell vom Router über scp zum Server versucht und es hat gut funktioniert. Ich konnte die Datei manuell auf den Server kopieren, ohne zuvor eine leere Datei erstellt zu haben.
user1609
Hat dir eine Antwort geholfen? Wenn ja, sollten Sie die Antwort akzeptieren, damit die Frage nicht für immer auftaucht und nach einer Antwort sucht. Alternativ können Sie Ihre eigene Antwort bereitstellen und akzeptieren.
Ron Maupin

Antworten:

6

Ich habe es gerade auf meinem CPE versucht:

[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 ~]% 

Welche Kopien mit config (4) in das Netzwerk (1) kopiert werden, durch Austauschen dieser können Sie die Richtung ändern (von Netzwerk zu ausgeführt).

Wenn ich über dem Skript ausgeführt werde, hat mein Home-Verzeichnis die Datei 'Dateiname', die meine CPE running-config enthält:

[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 ~]% 

Zusätzlich zu dem, was @daniel erwähnt, ist auch Ihr '14' oder 'Zeilenstatus' falsch. Sie verwenden 1 'Aktiv', während Sie 4 'createAndGo' verwenden sollten.

ytti
quelle
Ich habe es einfach noch einmal versucht, indem ich "14" in Ganzzahl 4 geändert habe und trotzdem einen Fehler im Paket erhalten habe. Grund: inkonsistenter Wert. Ich habe sogar das Snmpset mit "6" gelöscht, wie Sie es jedes Mal getan haben. Übrigens, Sie konnten es mit Ihrem obigen Setup zum Laufen bringen?
user1609
Ja. Oben funktioniert gut auf meinem 881G mit 15.1 (2) T5. Ich habe die Ausgabe des Skripts hinzugefügt. Wenn dieser Index / diese ID (9) hängt, erhalte ich dieselbe Beschwerde über einen inkonsistenten Wert. Es dauert ziemlich lange, bis Sie ihn zerstören können. Sie können mit einem neuen Index / einer neuen ID testen, um sicherzugehen.
Ytti
habe es mit einem anderen Index / einer anderen ID versucht, was immer noch nicht passiert. Ich werde ein anderes Gerät ausprobieren. Möglicherweise wird dieses spezielle Gerät nicht unterstützt. Selbst in der Cisco Mib- und Software-Matrix zeigt sich, dass diese MIBs für das aktuelle IOS unterstützt werden, auf dem ich teste.
user1609
Es ist mittlerweile eine ziemlich alte MIB, wie vielleicht 5 <10 Jahre. Also wahrscheinlich nicht das. Von IOS CLI aus funktioniert dies: 'Kopieren von running-config scp: // Benutzername: Passwort @ Server / Dateiname'
ytti
Ja, eine manuelle SCP-Kopie vom Router auf den Server funktioniert einwandfrei. Ich kann sogar einen Kronen-Scheduler oder ein EEM-Skript erstellen, um dies zu tun, und es funktioniert einwandfrei, wenn ich scp vom Router zum Server mache. nur nicht über snmp ...
user1609
4

Laut Cisco SNMP Object Navigator wird Wert 4 für 1.3.6.1.4.1.9.9.96.1.1.1.1.3 nicht unterstützt. Stattdessen bedeutet Wert 2 die Running-Konfiguration:

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

Wahrscheinlich erhalten Sie deshalb den Fehler badFileName.

BEARBEITEN:

Tatsächlich scheint es einen Widerspruch zwischen SNMP Object Navigator und der MIB-Definition zu geben , als Typ für ccCopySourceFileTypeund ccCopyDestFileTypeist ConfigFileTypeund gemäß der MIB-Definition:

ConfigFileType ::= TEXTUAL-CONVENTION

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

Und dies scheint durch Yttis Antwort gestützt zu werden

Daniel Yuste Aroca
quelle
Ja, das habe ich auch in der Mib gesehen, aber selbst wenn ich es in eine Ganzzahl von 2 ändere, erhalte ich die Fehlermeldung: *** snmpset -c <str> -v 2c <ip> 1.3.6.1.4.1.9.9 .96.1.1.1.1.3.111 i 2 Fehler im Paket. Grund: falseValue (Der eingestellte Wert ist unzulässig oder wird in irgendeiner Weise nicht unterstützt.) Fehlgeschlagenes Objekt: iso.3.6.1.4.1.9.9.96.1.1.1.1.3.111 *** Ich habe auch mit .3 und verschiedene Permutationen versucht. 4 wo vielleicht die ganze Zahl in beiden Fällen anders war. Ich versuche, von Router zu Server zu kopieren, was, wie ich verstehe, run-cfg to networkfile ist.
user1609
Ich denke, der Widerspruch könnte darin liegen, dass es zwei Generationen von Kopiermibs gibt. Das Original war viel einfacher / dümmer und hat nur tftp gemacht, ich kann mich nicht erinnern, aber vielleicht war in dieser Ära 1 Startup und 2 lief.
Ytti
das ist ein guter Punkt. Es scheint also, dass Änderungen mit Code-Upgrades vorgenommen wurden.
user1609
Die Mib "write-net" wurde (aus zahlreichen Gründen) zugunsten der Mib "config-copy" abgeschrieben, was immer noch der derzeitige Weg ist.
Ricky Beam
3

Ich habe dies schon einmal gepostet : http://checkforbees.com/router-backup/

Ich denke, Ihr Problem liegt bei den mehreren Snmpsets. Sie müssen zunächst den Eintrag erstellen, um dies zu tun. [14.xxx = 5 (createAndWait)] Anschließend können Sie den Eintrag nach Bedarf einrichten, bevor Sie den rowStatus auf "1" (aktiv) setzen.

[Hinweis: Meine Skripte sind Jahrzehnte alt, daher sind sie auf TFTP abgestimmt.]

[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

Ich mache eine Schleife über ... 10.111 (Status), während es "läuft". Ich vermute, Sie haben Ihren Eintrag "111" nie gelöscht. snmpsetDies ist ansonsten Ihre genaue Folge von s gegen einen 2960S mit dem ssh-Server einer Linux-Box. (Wie meine Eingabeaufforderung andeutet, eine Debian-Box.)

Ricky Beam
quelle
Ich habe es gemäß Ihrem Vorschlag versucht, habe aber immer noch nicht funktioniert :-(. Ich habe den gleichen Fehler und Grund für den Fehler. Ich frage mich, ob dies ein Fehler sein muss, dann für diesen spezifischen IOS-Code. 12.2 (33) SCF4
user1609
Welches Gerät benutzt du?
Ricky Beam
Ich habe meine Tests auf einem Cisco Ubr10k CMTS durchgeführt und es auch mit einem Cisco 3725 (12.4T-Code) versucht. Dabei habe ich das gleiche Ergebnis
erzielt
badFilenamekönnte auch einen SSH-Anmeldefehler bedeuten, aber ich bekomme einen noConfig(5)dafür. (was das Gegenteil von dem ist, was es sagen sollte)
Ricky Beam
Ich bekomme eine badFileName(2)von 12.4T. (der 2960S ist 15.x)
Ricky Beam