วิธีรับ 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.