Tự động sao lưu cấu hình (mỗi phút) trong Cisco IOS


16

Tôi muốn làm cho bộ định tuyến Cisco của tôi tự động thực hiện một bản sao chạy TFTP (và tự động điền vào các trường) sau mỗi 1 phút. Tôi cũng muốn nó được chạy trong nền. Bất cứ ai cũng biết nếu điều này là có thể / làm thế nào để làm điều đó? Tôi muốn làm điều này vì mục đích xem cấu hình đang chạy của bộ định tuyến của tôi trong notepad ++ (cập nhật thời gian thực) thay vì phải chạy chương trình và nhấn phím cách 4 hoặc 5 lần trước khi tôi nhận được những gì tôi cần xem. Tôi nghĩ rằng điều này sẽ cực kỳ hữu ích cho các phòng thí nghiệm phức tạp. Ngoài ra, các macro không hoạt động vì các lệnh máy chủ TFTP yêu cầu đầu vào.


3
Là một lần một phút thực sự cần thiết? Bạn cũng đã cân nhắc sử dụng tính năng lọc tích hợp trên CLI với regex để lọc các phần của cấu hình đang chạy mà bạn muốn xem chưa? Tức là | includehay | exclude? Tôi đang vật lộn để thấy sự hữu ích của việc có thể xem các cấu hình đang chạy của bạn "trong thời gian thực".
John Jensen

Tôi muốn có một màn hình với các cửa sổ cấu trúc liên kết và CLI của mình (được gắn thẻ và dán nhãn). Màn hình thứ hai của tôi với tất cả các cấu hình đang chạy của thiết bị của tôi theo thời gian thực. Việc có thể xem tất cả các cấu hình đang chạy của tôi trong thời gian thực giúp khắc phục sự cố, so sánh và sao chép / dán các khối lệnh dễ dàng hơn đáng kể. Đặc biệt là khi đi sâu vào các báo cáo lộ trình và ACL, đó là một lợi ích to lớn khi không phải gõ chương trình chạy | Bản đồ lộ trình nhiều lần để xem và so sánh phần cấu hình này với các thiết bị khác nhau. Tôi xin lỗi bạn đấu tranh để tìm thấy điều này hữu ích nhưng tôi đoán cho mỗi người của họ.
Michael May

@JohnJensen điểm tốt, tôi đã không nắm bắt được phần nào mỗi phút. Christian, bạn đã xem xét chỉ có một phiên ssh riêng thứ hai mở cho các thiết bị của bạn trên màn hình thứ hai, thay vì mở các cấu hình đang chạy trong một tài liệu văn bản? Theo dõi các phiên CLI của A để biết các thay đổi và Giám sát các phiên CLI của B để xem các cấu hình. Không nói một cách là tốt hơn so với cách khác, chỉ cần ném ý tưởng ra khỏi đó. :)
Brett Lykins

Brett, 'show running-config' không tạo ra đầu ra thời gian thực. Tôi phải gõ chương trình chạy lại mỗi lần tôi thực hiện thay đổi và tôi phải nhấn phím cách nhiều lần để hiển thị cho tôi tất cả cấu hình. Mục tiêu là có các cấu hình chạy đầy đủ được cập nhật gần như ngay khi bạn thay đổi chúng mà không cần sự can thiệp của người dùng.
Michael May

@ ChristiandelaPeña Tôi theo bạn, tôi chỉ nói rằng những người khác nhau làm việc theo những cách khác nhau. Tôi đoán cá nhân tôi không thấy sự cần thiết phải có cấu hình cập nhật trực tiếp theo cách bạn mô tả. Điều đó không làm cho nó sai, chỉ là cách tôi làm việc. :) Tôi muốn cung cấp cho bạn các công cụ để làm những gì bạn muốn, theo cách bạn muốn. Miễn là bạn đang làm việc và học tập, đó là tất cả những gì quan trọng với tôi.
Brett Lykins

Câu trả lời:


19

Bạn có một số tùy chọn để có được loại chức năng này trên thiết bị của Cisco. (Cái nào bạn sử dụng phụ thuộc vào nhu cầu của bạn và đôi khi phụ thuộc vào thiết bị và tải iOS. Một số thiết bị cũ hơn / tải IOS sẽ có các khả năng khác nhau.)

EDIT: Bạn đang hỏi về việc làm điều này cứ sau một phút, như bạn đã tìm thấy trong cuộc trò chuyện của chúng tôi về câu hỏi này, sẽ làm hỏng bộ định tuyến của bạn. (Đặc biệt là trong GNS3.) Các tùy chọn bên dưới có sẵn cho bạn để tự động sao lưu xác nhận, tuy nhiên tôi không khuyên bạn nên làm như vậy cứ sau 1 phút.

Bạn có thể:

  1. Sử dụng chức năng Kron của Cisco để lập lịch lệnh. Điều này sẽ cho phép bạn thực hiện các lệnh được xác định trước trên cơ sở theo lịch trình. Như bạn đã chỉ ra, copy run tftpyêu cầu xác nhận nhanh chóng tập tin. (Trừ khi bạn đã tắt xác nhận nhắc nhở tập tin , tuy nhiên tôi không khuyến nghị nó như một cài đặt bình thường.) Chuyển hướng không yêu cầu xác nhận. Vì vậy, lệnh được sử dụng trong lịch trình làshow run | redirect tftp://$SERVERIP/$PATH/$FILE

  2. Sử dụng chức năng Lưu trữ của Cisco để quản lý cấu hình. Lưu trữ là một cách để lưu trữ nhiều bản sao của cấu hình theo kiểu tuần tự và quay lại cấu hình nếu cần cho phiên bản trước. Sao chép bằng Kron sẽ ghi đè lên cấu hình trước đó, trong khi Lưu trữ cho phép bạn giữ tối đa 14 phiên bản cấu hình khác nhau ở vị trí đã chỉ định. Xem liên kết này trên mạng Cisco Learning để biết thêm thông tin hữu ích về Lưu trữ. Cụ thể cách tự động đặt tên tệp bằng các thẻ $ h và $ t.

Trong một trong các mẫu dưới đây, bạn có thể điều chỉnh thời gian theo nhu cầu của mình, đây chỉ là những gì tôi nhanh chóng rút ra khỏi một số thiết bị sản xuất.


Cấu hình mẫu để có cấu hình ghi Kron và sao lưu nó lên máy chủ tftp mỗi tuần một lần:

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

Cấu hình mẫu để Lưu trữ sao lưu cấu hình của bạn vào máy chủ tftp hàng ngày:

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

12

Thực sự có một cách khác.

Bạn có thể kích hoạt bản sao TFTP bằng SNMP. Nó không quá thẳng về phía trước, nhưng vô cùng hữu ích.

Đầu tiên, bạn sẽ cần một máy chủ TFTP (không ngạc nhiên). Bạn cũng sẽ cần một cái gì đó có thể gửi yêu cầu snmp. Tôi đã thực hiện nó một cách hiệu quả với các công cụ snmp của Linux.

Bạn sẽ muốn thiết lập một cộng đồng mới cho SNMP có quyền truy cập ghi hạn chế và có thể khóa nó xuống hơn nữa với IP ACL. Thật ra bạn chỉ cần có thể viết cho ccCopyTableOID.

Về phía Linux, bạn sẽ cần các MIB sau (để dễ đọc hơn là chức năng)

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

Với các MIB được cài đặt ở vị trí phù hợp cho cấu hình SNMP của bạn trên Linux, bạn sẽ có thể kiểm tra kết nối với snmptable như vậy:

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

Bạn thường cần tạo trước tệp trên máy chủ TFTP để bộ định tuyến sao chép vào.

Để kích hoạt một bản sao TFTP, bạn cần chèn một hàng vào ccCopyTable.

snmpset cho phép bạn làm điều này.

# 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

Khi bạn đã thực hiện điều đó, bạn sẽ có thể chạy lại lệnh đầu tiên và xem lệnh sao chép trong 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"

Sẽ không có gì xảy ra cho đến khi bạn đặt một cột khác trên ccCopyTable để kích hoạt hàng.

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

Nếu bạn kiểm tra lại ccCopyTable, bạn sẽ thấy Trạng thái và TimeStarted đã được cập nhật để phản ánh rằng tệp đã được sao chép.

Có nhiều chi tiết hơn trong các liên kết nguồn bên dưới, bao gồm cách làm trống ccCopyTable (nếu bạn muốn).

Tôi đã sử dụng cùng một phương pháp trong tập lệnh từ máy chủ Linux để kích hoạt bản sao TFTP, sau đó cam kết tệp thành git và đẩy nó trở lại kho lưu trữ, tất cả trong một quy trình nhanh chóng.

Nguồn: http://www.ciscozine.com/2013/08/22/how-to-save-configurations-USE-snmp/

http://bodgitandscarper.co.uk/networks/USE-snmp-to-trigger-cisco-tftp-backups/


2
Đây là cách tôi đã thực hiện trong nhiều năm, sử dụng Pancho, cho đến khi gần đây tôi chuyển sang RANCID để nhận thêm hỗ trợ thiết bị. RANCID rất được khuyến khích, hoàn toàn vì bạn cũng có quyền kiểm soát phiên bản - sử dụng 'svn đổ lỗi' để tìm hiểu khi giao diện đó thay đổi từ chế độ song công hoàn toàn sang tự động hoặc chứng minh rằng không có gì thay đổi trong x tháng.
AnotherHowie 17/12/13

RANCID có thể kiểm tra vào Git chứ không phải SVN không?
Tom O'Connor

Tôi không nghĩ vậy. CVS là mặc định. SVN là một lựa chọn. Vì đó là tình huống kiểm soát phiên bản chỉ viết, một nhánh, một người dùng (RANCID), nên không có lợi ích cụ thể nào khi sử dụng cái gì khác. RANCID 3 hiện đang hoạt động, vì vậy có thể họ đã cập nhật phần đó. Mặc dù đây là một phần mềm tương đối lỗi thời - perl, mong đợi và vỏ.
AnotherHowie

Chỉ cần kiểm tra và RANCID 3 không đề cập đến các tùy chọn VC mới, tại đây: gossamer-threads.com/lists/rancid/users/6555#6555
AnotherHowie 18/12/13

2

Bạn có thể sử dụng EEM

Thí dụ:

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"

Chỉ trên NX-OS, tôi nghi ngờ ...
Tom O'Connor

1
@Tom, tôi không có nexus (thật không may ;-)), trong iOS nó được hỗ trợ ... Tôi đoán EEM được hỗ trợ bởi tất cả các bộ định tuyến và hầu hết tất cả các công tắc: ví dụ: tôi chỉ có một mô hình, không hỗ trợ EEM - 2950, ​​nhưng trong 2960, 3560, 3750 (E chứ không phải E), 4500, 4948, 6500 thì được hỗ trợ.
pyatka

2

Bạn có thể sử dụng RANCID để làm điều này.

Bạn nhận được một vài thứ hay ho khác như kiểm soát phiên bản của cấu hình, khác biệt email và những thứ hay ho khác (theo mặc định, nó cần một kho lưu trữ phần cứng để nếu phần cứng thay đổi, bạn sẽ nhận được cảnh báo về điều đó).

Nó hoạt động với mọi công tắc và bộ định tuyến mà tôi đã sử dụng cho đến nay (Cisco / Juniper / Dell) là một điểm cộng khác.


1

Bạn có thể sử dụng tập lệnh perl, chẳng hạn như tập lệnh này . Sử dụng:perl cisco_backup.pl "my-enable-password"


1
Các bài viết chỉ liên kết bị hạn chế về tính hữu dụng của chúng. Bạn có thể thêm các phần có liên quan của giải pháp này vào câu trả lời của bạn không?
Ryan Foley

Không bao giờ đặt mật khẩu vào dòng lệnh nếu có thể. Sử dụng môi trường thay thế.
Cougar

0

fetchconfig là một công cụ khác cho việc này:

fetchconfig là tập lệnh Perl để truy xuất cấu hình của nhiều thiết bị. Nó đã được thử nghiệm trên Linux và Windows và hiện hỗ trợ nhiều loại thiết bị, bao gồm Cisco IOS, Cisco Catalyst, Cisco ASA, Cisco PIX, FortiGate Tường lửa, ProCurve, Bộ định tuyến Ethernet của Ethernet (còn gọi là Riverstone), Dell PowerConnect Switch, Terayon 3200 / 3500 CMTS, Datacom DmSwitch Switch, HP MSR Routers, Mikrotik Routers, Tellabs MSR Routers, Juniper EX Switch JunOS, Oracle Acme Packet, Audiocodes Mediant, Cisco IOS XR, NEC Univerge IX.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.