สำรองข้อมูลการกำหนดค่าอัตโนมัติ (ทุกนาที) ใน Cisco IOS


16

ฉันต้องการให้เราเตอร์ Cisco ทำการคัดลอกเรียกใช้ TFTP โดยอัตโนมัติ (และเติมข้อมูลในฟิลด์โดยอัตโนมัติ) ทุก ๆ 1 นาที ฉันต้องการให้มันทำงานในพื้นหลัง ใครรู้ว่าเป็นไปได้ / วิธีการทำ ฉันต้องการทำสิ่งนี้เพื่อดูการกำหนดค่าการทำงานของเราเตอร์ของฉันใน notepad ++ (ซึ่งอัปเดตตามเวลาจริง) แทนที่จะต้องแสดงโชว์และกด spacebar 4 หรือ 5 ครั้งก่อนที่ฉันจะไปถึงสิ่งที่ฉันต้องการดู ฉันคิดว่านี่จะเป็นประโยชน์อย่างยิ่งสำหรับห้องปฏิบัติการที่ซับซ้อน นอกจากนี้มาโครไม่ทำงานเนื่องจากคำสั่งเซิร์ฟเวอร์ TFTP ที่ต้องการอินพุต


3
จำเป็นครั้งเดียวจริงหรือ คุณได้พิจารณาใช้การกรองในตัวบน CLI ด้วย regex เพื่อกรองส่วนต่าง ๆ ของการกำหนดค่าการรันที่คุณต้องการดูหรือไม่? Ie | includeหรือ| exclude? ฉันพยายามที่จะเห็นประโยชน์ของการดูการกำหนดค่าการทำงานของคุณ "แบบเรียลไทม์"
John Jensen

ฉันชอบที่จะมีหนึ่งจอภาพที่มีโทโพโลยีและหน้าต่าง CLI ของฉัน (แท็บและติดป้ายกำกับ) จอภาพที่สองของฉันพร้อมการกำหนดค่าที่ทำงานอยู่ทั้งหมดของอุปกรณ์ของฉันตามเวลาจริง ความสามารถในการดูการกำหนดค่าแบบเรียลไทม์ทั้งหมดของฉันทำให้การแก้ไขปัญหาการเปรียบเทียบและการคัดลอก / วางคำสั่งบล็อกง่ายขึ้นมาก โดยเฉพาะอย่างยิ่งเมื่อลงลึกในข้อความสั่งเส้นทางแผนที่และ ACL มันเป็นประโยชน์อย่างมากโดยไม่ต้องพิมพ์ run run | แผนที่เส้นทางหลายครั้งเพื่อดูและเปรียบเทียบส่วนนี้ของการกำหนดค่ากับอุปกรณ์ต่าง ๆ ฉันขอโทษที่คุณต้องดิ้นรนเพื่อหาสิ่งนี้มีประโยชน์ แต่ฉันเดาไปเอง
Michael พฤษภาคม

@JohnJensen จุดที่ดีฉันไม่ได้จับส่วนเกี่ยวกับทุกนาที คริสเตียนคุณคิดว่าเพิ่งเปิดเซสชัน ssh ที่สองแยกจากกันบนอุปกรณ์ของคุณบนหน้าจอที่สองแทนที่จะเปิดใช้งาน configs ในเอกสารข้อความหรือไม่? เซสชัน CLI ของมอนิเตอร์ A สำหรับการเปลี่ยนแปลงและเซสชัน CLI ของมอนิเตอร์ B สำหรับการดูการกำหนดค่า การไม่พูดว่าวิธีใดดีกว่าวิธีอื่นเพียงแค่โยนความคิดออกไป :)
Brett Lykins

เบร็ท 'show running-config' ไม่ได้สร้างเอาต์พุตแบบเรียลไทม์ ฉันจะต้องพิมพ์โชว์อีกครั้งทุกครั้งที่ฉันทำการเปลี่ยนแปลงและฉันจะต้องกดแถบพื้นที่หลายครั้งเพื่อให้มันแสดงการกำหนดค่าทั้งหมด เป้าหมายคือมีการกำหนดค่าการทำงานเต็มรูปแบบที่ได้รับการปรับปรุงเกือบจะทันทีที่คุณทำการเปลี่ยนแปลงกับพวกเขาโดยไม่ต้องแทรกแซงผู้ใช้
Michael พฤษภาคม

@ ChristiandelaPeñaฉันติดตามคุณฉันแค่บอกว่าคนอื่นทำงานต่างกัน ฉันเดาว่าโดยส่วนตัวแล้วฉันไม่เห็นว่าจำเป็นต้องมีการอัปเดตการกำหนดค่าสดในแบบที่คุณกำลังอธิบาย นั่นไม่ได้ทำให้มันผิด แต่ไม่ใช่วิธีที่ฉันทำงาน :) ฉันต้องการให้คุณมีเครื่องมือในการทำสิ่งที่คุณต้องการในแบบที่คุณต้องการ ตราบใดที่คุณทำงานและเรียนรู้นั่นคือสิ่งที่สำคัญสำหรับฉัน
Brett Lykins

คำตอบ:


19

คุณมีหลายตัวเลือกในการรับฟังก์ชั่นประเภทนี้ในอุปกรณ์ Cisco (อันไหนที่คุณใช้ขึ้นอยู่กับความต้องการของคุณและบางครั้งขึ้นอยู่กับอุปกรณ์และโหลด IOS อุปกรณ์เก่า / โหลด IOS บางรุ่นจะมีความสามารถแตกต่างกัน)

แก้ไข: คุณกำลังถามเกี่ยวกับการทำเช่นนี้ทุกหนึ่งนาทีซึ่งตามที่คุณพบในการสนทนาของเราเกี่ยวกับคำถามนี้จะชะงักเราเตอร์ของคุณ (โดยเฉพาะอย่างยิ่งใน GNS3) ตัวเลือกด้านล่างนี้มีให้สำหรับการสำรองข้อมูลการยืนยันอัตโนมัติ แต่ฉันไม่แนะนำให้ทำทุก ๆ 1 นาที

คุณสามารถ:

  1. ใช้ฟังก์ชั่น Kronของ Cisco สำหรับการตั้งเวลาคำสั่ง สิ่งนี้จะช่วยให้คุณสามารถรันคำสั่งที่กำหนดไว้ล่วงหน้าตามกำหนดเวลา ในขณะที่คุณชี้ให้เห็นว่าcopy run tftpต้องมีการยืนยันไฟล์ให้ (เว้นแต่คุณจะปิดการยืนยันไฟล์แจ้งแต่ฉันไม่แนะนำให้ใช้เป็นการตั้งค่าปกติ) การเปลี่ยนเส้นทางไม่จำเป็นต้องมีการยืนยัน ดังนั้นคำสั่งที่ใช้ในตัวกำหนดตารางเวลาคือshow run | redirect tftp://$SERVERIP/$PATH/$FILE

  2. ใช้ฟังก์ชั่นเก็บถาวรของ Cisco สำหรับการจัดการการกำหนดค่า การเก็บถาวรเป็นวิธีการจัดเก็บสำเนาการกำหนดค่าหลายชุดในรูปแบบตามลำดับและย้อนกลับการกำหนดค่าหากจำเป็นสำหรับรุ่นก่อนหน้า การคัดลอกออกด้วย Kron จะเขียนทับการกำหนดค่าก่อนหน้าในขณะที่การเก็บถาวรช่วยให้คุณสามารถเก็บรุ่นการกำหนดค่าได้มากถึง 14 รุ่นในตำแหน่งที่ระบุ ดูลิงค์นี้ในเครือข่าย Cisco Learningสำหรับข้อมูลที่เป็นประโยชน์เพิ่มเติมเกี่ยวกับเอกสารเก่า วิธีการตั้งชื่อไฟล์แบบไดนามิกด้วยแท็ก $ h และ $ t แบบไดนามิก

ในตัวอย่างด้านล่างคุณสามารถปรับเวลาตามความต้องการของคุณนี่คือสิ่งที่ฉันดึงออกมาจากอุปกรณ์การผลิตอย่างรวดเร็ว


ตัวอย่างการกำหนดค่าเพื่อให้ Kron เขียนการกำหนดค่าและสำรองข้อมูลไปยังเซิร์ฟเวอร์ tftp สัปดาห์ละครั้ง:

kron occurrence SaveConfig at 23:50 Mon recurring
policy-list SaveConfig
!
kron occurrence BackupRunningConfig at 23:55 Mon recurring
policy-list BackupRunningConfig
!
kron policy-list SaveConfig
cli write
!
kron policy-list BackupRunningConfig
cli show running-config | redirect tftp://10.10.10.10/configs/testswitch.txt

ตัวอย่างการกำหนดค่าให้มีการสำรองข้อมูลการกำหนดค่าของคุณไปยังเซิร์ฟเวอร์ tftp ทุกวัน:

archive
 path tftp://10.10.10.10/configs/$h-$t
 time-period 1440
 maximum 14

12

มีจริงอีกทางหนึ่ง

คุณสามารถทริกเกอร์สำเนา TFTP โดยใช้ SNMP มันไม่ได้ตรงไปตรงมาชะมัดแต่มีประโยชน์อย่างเหลือเชื่อ

ประการแรกคุณจะต้องใช้เซิร์ฟเวอร์ TFTP (ไม่แปลกใจ) คุณจะต้องมีสิ่งที่สามารถส่งคำขอ snmp ฉันทำมันอย่างมีประสิทธิภาพด้วยเครื่องมือ snmp ของ Linux

คุณจะต้องการตั้งค่าชุมชนใหม่สำหรับ SNMP ที่ จำกัด การเข้าถึงเพื่อเขียนและอาจล็อคไว้ด้วย IP ACL ที่จริงแล้วคุณเพียงแค่ต้องสามารถเขียนถึงccCopyTableOID

ทางด้าน Linux คุณจะต้องใช้ MIB ดังต่อไปนี้ (เพื่อความสะดวกในการอ่านแทนการใช้งาน)

CISCO-CONFIG-COPY-MIB
CISCO-SMI
CISCO-ST-TC

เมื่อติดตั้ง MIBs ในตำแหน่งที่เกี่ยวข้องสำหรับการกำหนดค่า SNMP ของคุณบน Linux คุณควรทดสอบการเชื่อมต่อด้วย snmptable ดังนี้:

snmptable -v2c -c writeCommunity 192.168.1.1 ccCopyTable
CISCO-CONFIG-COPY-MIB::ccCopyTable: No entries

โดยปกติคุณจะต้องสร้างไฟล์ล่วงหน้าบนเซิร์ฟเวอร์ TFTP เพื่อให้เราเตอร์ทำการคัดลอก

เพื่อที่จะเรียกสำเนา TFTP ccCopyTableคุณต้องใส่แถวเข้าไปใน

snmpset ให้คุณทำสิ่งนี้

# snmpset -v2c -c writeCommunity 192.168.1.1 \
> ccCopyProtocol.23 i tftp \
> ccCopySourceFileType.23 i runningConfig \
> ccCopyDestFileType.23 i networkFile \
> ccCopyServerAddress.23 a 192.168.1.100 \
> ccCopyFileName.23 s router.conf

CISCO-CONFIG-COPY-MIB::ccCopyProtocol.23 = INTEGER: tftp(1)
CISCO-CONFIG-COPY-MIB::ccCopySourceFileType.23 = INTEGER: runningConfig(4)
CISCO-CONFIG-COPY-MIB::ccCopyDestFileType.23 = INTEGER: networkFile(1)
CISCO-CONFIG-COPY-MIB::ccCopyServerAddress.23 = IpAddress: 192.168.1.100
CISCO-CONFIG-COPY-MIB::ccCopyFileName.23 = STRING: router.conf

เมื่อคุณทำเสร็จแล้วคุณควรจะสามารถเรียกใช้คำสั่งแรกอีกครั้งและดูคำสั่งคัดลอกใน ccCopyTable

snmptable -v 2c -c writeCommunity 192.168.1.1 ccCopyTable

SNMP table: CISCO-CONFIG-COPY-MIB::ccCopyTable

 index Protocol SourceFileType DestFileType ServerAddress    FileName UserName
    23     tftp  runningConfig  networkFile     192.168.1.100 router.conf        ?

SNMP table CISCO-CONFIG-COPY-MIB::ccCopyTable, part 2

 index UserPassword NotificationOnCompletion State TimeStarted TimeCompleted
    23            ?                    false     ?           ?             ?

SNMP table CISCO-CONFIG-COPY-MIB::ccCopyTable, part 3

 index FailCause EntryRowStatus ServerAddressType ServerAddressRev1
    23         ?              ?              ipv4       "192.168.1.100"

จะไม่มีอะไรเกิดขึ้นจนกว่าคุณจะตั้งค่าคอลัมน์อื่นใน ccCopyTable เพื่อเปิดใช้งานแถว

 snmpset  -v2c -c writeCommunity 192.168.1.1 \
> ccCopyEntryRowStatus.23 i active

หากคุณตรวจสอบ ccCopyTable อีกครั้งคุณจะเห็นว่าสถานะและ TimeStarted ได้รับการอัปเดตเพื่อแสดงว่าไฟล์ถูกคัดลอก

มีรายละเอียดเพิ่มเติมในลิงค์แหล่งข้อมูลด้านล่างรวมถึงวิธีการล้าง ccCopyTable (หากคุณต้องการ)

ฉันใช้วิธีเดียวกันในสคริปต์จากเซิร์ฟเวอร์ Linux เพื่อเรียกสำเนา TFTP จากนั้นส่งไฟล์ไปยังคอมไพล์และผลักมันกลับไปที่ที่เก็บทั้งหมดในขั้นตอนเดียว

แหล่งที่มา: http://www.ciscozine.com/2013/08/22/how-to-save-configurations-using-snmp/

และ http://bodgitandscarper.co.uk/networks/using-snmp-to-trigger-cisco-tftp-backups/


2
นี่คือวิธีที่ฉันทำมาหลายปีโดยใช้ Pancho จนกระทั่งฉันเพิ่งเปลี่ยนเป็น RANCID เพื่อรับการสนับสนุนอุปกรณ์เพิ่มเติม หืนขอแนะนำหมดจดเพราะคุณจะได้รับการควบคุมเวอร์ชันเกินไป - ใช้ 'SVN โทษ' เพื่อหาเมื่ออินเตอร์เฟซที่มีการเปลี่ยนแปลงจากเพล็กซ์เต็มรูปแบบอัตโนมัติหรือพิสูจน์อะไรที่มีการเปลี่ยนแปลง x เดือน
AnotherHowie

RANCID สามารถตรวจสอบเป็น Git แทนที่จะเป็น SVN ได้หรือไม่
Tom O'Connor

ฉันไม่คิดอย่างนั้น CVS เป็นค่าเริ่มต้น SVN เป็นตัวเลือก เนื่องจากเป็นสถานการณ์การควบคุมเวอร์ชันสำหรับเขียนอย่างเดียว, สาขาเดียว, ผู้ใช้คนเดียว (RANCID) จึงไม่มีประโยชน์อย่างยิ่งในการใช้อย่างอื่น ถึงแม้ว่า RANCID 3 จะทำงานอยู่ในขณะนี้ดังนั้นจึงเป็นไปได้ที่พวกเขาจะได้อัปเดตส่วนนั้น มันเป็นซอฟต์แวร์ที่ค่อนข้างล้าสมัย - perl, expect และ shell
AnotherHowie

เพียงแค่ตรวจสอบและหืน 3 ไม่ได้พูดถึงตัวเลือก VC ใหม่ในที่นี่: gossamer-threads.com/lists/rancid/users/6555#6555
AnotherHowie

2

คุณสามารถใช้EEM

ตัวอย่าง:

event manager applet dumpconfig
 event timer {absolute time time-value | countdown time time-value | cron cron-entry cron-entry | watchdog time time-value} [name timer-name]
 action 1.0 cli command "enable"
 action 2.0 cli show running-config | redirect tftp://10.10.10.10/configs/testswitch.txt
 action 998.0 cli command "end"
 action 999.0 cli command "exit"

เฉพาะใน NX-OS ฉันสงสัยว่า ...
Tom O'Connor

1
@Tom ฉันไม่มี Nexus (น่าเสียดาย ;-)) ใน IOS ได้รับการสนับสนุน ... ฉันเดาว่า EEM สนับสนุนโดยเราเตอร์ทั้งหมดและสวิตช์ส่วนใหญ่ทั้งหมด: ตัวอย่างเช่นฉันมีรุ่นเดียวเท่านั้นซึ่งไม่รองรับ EEM - 2950 แต่ใน 2960s, 3560, 3750 (E และไม่ใช่ E), 4500, 4948, 6500 รองรับ
pyatka

2

คุณสามารถใช้RANCIDเพื่อทำสิ่งนี้

คุณจะได้รับสิ่งดีๆอีกสองสามอย่างเช่นการควบคุมเวอร์ชันของการกำหนดค่าอีเมลต่าง ๆ และสิ่งดีๆอื่น ๆ (โดยค่าเริ่มต้นจะต้องใช้คลังฮาร์ดแวร์ดังนั้นหากฮาร์ดแวร์เปลี่ยนแปลงคุณจะได้รับการแจ้งเตือนด้วย)

มันใช้งานได้กับสวิตช์ทุกตัวและเราเตอร์ที่ฉันเคยขว้างไปแล้ว (Cisco / Juniper / Dell) ซึ่งเป็นข้อดีอีกอย่างหนึ่ง


1

คุณสามารถใช้ Perl สคริปต์เช่นนี้ การใช้งาน:perl cisco_backup.pl "my-enable-password"


1
โพสต์ลิงก์อย่างเดียวมีข้อ จำกัด ในประโยชน์ของพวกเขา คุณสามารถเพิ่มส่วนที่เกี่ยวข้องของโซลูชันนี้ลงในคำตอบของคุณได้หรือไม่?
Ryan Foley

อย่าใส่รหัสผ่านในบรรทัดคำสั่งถ้าเป็นไปได้ ใช้สภาพแวดล้อมแทน
Cougar

0

fetchconfig เป็นอีกเครื่องมือหนึ่งสำหรับสิ่งนี้:

fetchconfigเป็นสคริปต์ Perl สำหรับการดึงการกำหนดค่าของอุปกรณ์หลาย ๆ มันได้รับการทดสอบภายใต้ Linux และ Windows และปัจจุบันรองรับอุปกรณ์หลากหลายรวมถึง Cisco IOS, Cisco Catalyst, Cisco ASA, Cisco PIX, ไฟร์วอลล์ FortiGate, ProCurve, เราเตอร์ Alcatel Ethernet (aka Riverstone), สวิตช์ Dell PowerConnect, Terayon 3200 / 3500 CMTS, Datacom DmSwitch Switches, HP MSR เราเตอร์, เราเตอร์ Mikrotik, Tellabs MSR เราเตอร์, Juniper EX Switch JunOS, Oracle Acme Packet, Audiocodes Mediant, Cisco IOS XR, NEC Univerge IX

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