วิธีรับ scp ผ่าน snmp เพื่อทำงานกับเราเตอร์ของซิสโก้?


10

ฉันมีห้องปฏิบัติการที่ฉันพยายามใช้ SCP ผ่าน SNMP ไปยังเราเตอร์ของ Cisco ฉันพบเอกสารออนไลน์บางอย่างเช่น: http://ccie20728.wordpress.com/2008/05/20/get-the-cisco- การกำหนดค่า-over-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 ที่สูงกว่า บนเซิร์ฟเวอร์อูบุนตูฉันมีการติดตั้ง / รัน openSSH และทำ 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

จากนั้นเพื่อตรวจสอบสถานะคือฉันทำ 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 สตริง" ด้านบนรวมถึงนามสกุลไฟล์ที่ต่างกันโดยมีและไม่มีไฮเฟนชื่อไฟล์เดียวกับที่เรียกใช้ config cmds แม้แต่ชื่อไฟล์พา ธ สัมบูรณ์ที่ระบุ

ฉันได้ลองแก้ไขข้อบกพร่องsshdด้วยระดับการบันทึกต่างๆและไม่ได้รับเอาต์พุตจากไฟล์ syslog ที่บันทึก / จัดเก็บไว้

มีใครสามารถทำงานนี้ได้บ้าง


นี่คืออีกสองลิงค์ที่ฉันใช้เป็นเอกสาร: tools.cisco.com/Support/SNMP/do/…และcisco.com/en/US/tech/tk648/tk362/…
user1609

หากต้องการทิ้งปัญหาในเซิร์ฟเวอร์ SCP จะใช้งานได้หรือไม่หากคุณเรียกใช้สำเนาด้วยตนเองจากเราเตอร์ของคุณ ฉันดูเหมือนจะจำเซิร์ฟเวอร์ TFTP บางตัวที่ไม่อนุญาตให้เราสร้างไฟล์ใหม่ในขณะที่เขียนมันดังนั้นก่อนอื่นเราต้องสร้างไฟล์เปล่าที่ฝั่งเซิร์ฟเวอร์แล้วเรียกใช้การคัดลอกด้วยไฟล์ปลายทางที่ชี้ไปที่ชื่อไฟล์เปล่า
Daniel Yuste Aroca

ใช่ฉันลองด้วยตัวเองจากเราเตอร์ไปยังเซิร์ฟเวอร์ผ่าน scp และทำงานได้ดี ฉันสามารถคัดลอกไฟล์ไปยังเซิร์ฟเวอร์ด้วยตนเองได้โดยไม่ต้องสร้างไฟล์เปล่ามาก่อน
user1609

คำตอบใดช่วยคุณได้บ้าง ถ้าเป็นเช่นนั้นคุณควรยอมรับคำตอบเพื่อที่คำถามจะไม่โผล่ขึ้นมาเรื่อย ๆ โดยมองหาคำตอบ หรือคุณสามารถให้และยอมรับคำตอบของคุณเอง
Ron Maupin

คำตอบ:


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) โดยการเปลี่ยนสิ่งเหล่านี้คุณสามารถเปลี่ยนทิศทาง (จากเครือข่ายเป็นการเรียกใช้)

การเรียกใช้สคริปต์ด้านบนไดเรกทอรีบ้านของฉันจะมีไฟล์ 'ชื่อไฟล์' ซึ่งมี 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

ใช่. ข้างต้นใช้งานได้ดีกับ 881G ที่ทำงาน 15.1 (2) T5 ฉันเพิ่มเอาต์พุตของสคริปต์ หากฉันมีดัชนี / id (9) หยุดทำงานแสดงว่าฉันได้รับการร้องเรียน 'ค่าที่ไม่สอดคล้อง' เดียวกันมันใช้เวลาค่อนข้างนานก่อนที่คุณจะทำลายมันได้ คุณอาจทดสอบด้วยดัชนี / ID ใหม่เพื่อความแน่ใจ
ytti

ลองใช้ด้วยดัชนี / ID อื่นยังคงไม่เกิดขึ้น ฉันจะลองใช้อุปกรณ์อื่น อาจจะไม่รองรับอุปกรณ์เฉพาะนี้จริง แม้ใน cisco mib และเมทริกซ์ของซอฟต์แวร์ก็แสดงให้เห็นว่า MIB เหล่านี้ได้รับการสนับสนุนสำหรับการทดสอบ IOS ของฉันในปัจจุบัน
user1609

ตอนนี้เป็น MIB ที่ค่อนข้างเก่าแล้วน่าจะเป็น 5 <10 ปี ดังนั้นอาจไม่เป็นเช่นนั้น จาก IOS CLI ทำงานนี้: 'คัดลอก running-config scp: // ชื่อผู้ใช้: รหัสผ่าน @ เซิร์ฟเวอร์ / ชื่อไฟล์'
ytti

ใช่ทำสำเนาคู่มือจากเราเตอร์ไปยังเซิร์ฟเวอร์ทำงานได้ดี ฉันยังสามารถสร้าง kron scheduler หรือสคริปต์ EEM เพื่อทำสิ่งนี้และทำงานได้ดีในการทำ scp จากเราเตอร์ไปยังเซิร์ฟเวอร์ ก็ไม่ผ่าน SNMP ...
user1609

4

ตาม Cisco SNMP Object Navigator ไม่รองรับค่า 4 สำหรับ 1.3.6.1.4.1.9.9.9.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 ข้อผิดพลาดในแพ็กเก็ต เหตุผล: misValue (ค่าที่ตั้งไว้นั้นผิดกฎหมายหรือไม่ได้รับการสนับสนุนในบางวิธี) วัตถุที่ล้มเหลว: iso.3.6.1.4.1.9.9.9.1.1.1.1.1.3.111 *** ฉันได้ลองวิธีเรียงสับเปลี่ยนแบบนี้ด้วย. 3 และ 4 ซึ่งบางทีจำนวนเต็มอาจแตกต่างกันในทั้งสองกรณี ฉันพยายามที่จะคัดลอกจากเราเตอร์ไปยังเซิร์ฟเวอร์ซึ่งเท่าที่ฉันเข้าใจคือ run-cfg ไปยัง networkfile
user1609

ฉันคิดว่าความขัดแย้งอาจเป็นเพราะมีการคัดลอกสองรุ่น ต้นฉบับนั้นง่ายกว่า / โง่มากและเพิ่ง tftp ฉันจำไม่ได้ แต่บางทีในยุคที่ 1 นั้นเริ่มทำงานและทำงาน 2 ครั้ง
ytti

นั่นเป็นจุดที่ดี ดังนั้นจึงดูเหมือนว่ามีการเปลี่ยนแปลงเกิดขึ้นกับการอัพเกรดรหัส
user1609

mib "write-net" ถูกคิดค่าเสื่อมราคา (ด้วยเหตุผลมากมาย) เพื่อสนับสนุน mib "config-copy" ซึ่งยังคงเป็นวิธีปัจจุบันในการทำ
Ricky Beam

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 (ตามที่แจ้งให้ฉันเห็นกล่องเดเบียน)


ฉันพยายามตามคำแนะนำของคุณ แต่ก็ยังใช้งานไม่ได้ :-( ฉันได้รับข้อผิดพลาดเดียวกันและสาเหตุของความล้มเหลวฉันสงสัยว่านี่เป็นข้อผิดพลาดบางอย่างแล้วสำหรับรหัส IOS นี้ 12.2 (33) SCF4
user1609

คุณใช้อุปกรณ์อะไร
Ricky Beam

ทำการทดสอบของฉันกับ cisco ubr10k CMTS แล้วก็ลองกับ cisco 3725 (รหัส 12.4T) ได้รับผลลัพธ์เดียวกัน
user1609

badFilenameอาจหมายถึงความล้มเหลวในการเข้าสู่ระบบ ssh แต่ฉันได้รับnoConfig(5)ที่ (ซึ่งตรงข้ามกับที่ควรพูด)
Ricky Beam

ฉันได้รับbadFileName(2)จาก 12.4T (2960S คือ 15.x)
Ricky Beam

0

ตรวจสอบที่นี่: วิธีคัดลอกไฟล์การกำหนดค่าไปยังและจากเราเตอร์ Cisco IOS ที่ใช้ SNMP

เปลี่ยนccCopyProtocolเป็นวิธีการโอนที่คุณต้องการ:

  1. TFTP
  2. FTP
  3. RCP
  4. SCP
  5. SFTP

นี่คือสคริปต์ทุบตีเพื่อทำการสำรองข้อมูลการกำหนดค่าโดยอัตโนมัติ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.