Cisco IOS에서 구성 백업 자동화 (1 분마다)


16

Cisco 라우터가 1 분마다 자동으로 복사 실행 TFTP를 수행하고 필드를 자동으로 채우도록하고 싶습니다. 또한 백그라운드에서 실행하고 싶습니다. 이것이 가능한지 / 어떻게하는지 아는 사람이 있습니까? 쇼 실행을 수행하고 스페이스 바를 4 ~ 5 번 누르는 대신 메모장 + + (실시간 업데이트)에서 라우터의 실행중인 구성을 볼 수 있도록하기 위해이 작업을 수행하고 싶습니다. 복잡한 실험실에서는 이것이 매우 유용 할 것 같습니다. 또한 입력이 필요한 TFTP 서버 명령으로 인해 매크로가 작동하지 않습니다.


3
1 분에 한 번 정말로 필요한가요? 보고 싶은 실행중인 구성의 일부를 필터링하기 위해 regex와 함께 CLI에서 내장 필터링을 사용하는 것도 고려 했습니까? 즉 | include| exclude? 실행중인 구성을 "실시간으로"볼 수있는 유용성을보기 위해 고심하고 있습니다.
John Jensen

토폴로지 및 CLI 창 (탭 및 레이블이있는)이있는 모니터가 하나 있습니다. 내 장치의 모든 실행 구성을 실시간으로 사용하는 두 번째 모니터. 실행중인 모든 구성을 실시간으로 볼 수 있으면 명령 블록 문제 해결, 비교 및 ​​복사 / 붙여 넣기가 훨씬 쉬워집니다. 특히 라우트 맵 문과 ACL에 대해 자세히 살펴보면 show run |을 입력하지 않아도 큰 이점이 있습니다. 라우트 맵을 여러 번 구성의이 부분을보고 다른 장치와 비교하십시오. 이 유용한 정보를 찾기 위해 애 쓰고 있지만 죄송합니다.
Michael May

@ JohnJensen 좋은 지적, 나는 매 순간에 대한 부분을 잡지 않았다. Christian, 텍스트 문서에서 실행중인 구성을 열지 않고 두 번째 모니터에서 장치에 별도의 두 번째 ssh 세션을 열어 두는 것을 고려 했습니까? 변경 사항은 A의 CLI 세션을 모니터링하고 구성을 보려면 B의 CLI 세션을 모니터링하십시오. 한 가지 방법은 다른 방법보다 낫다는 것이 아니라 아이디어를 버리는 것입니다. :)
Brett Lykins

Brett, 'show running-config'는 실시간 출력을 생성하지 않습니다. 변경 할 때마다 show run을 다시 입력해야하며 스페이스 바를 여러 번 눌러 모든 구성을 표시해야합니다. 목표는 사용자 개입없이 구성을 변경하자마자 거의 업데이트되는 전체 실행 구성입니다.
Michael May

@ ChristiandelaPeña 나는 당신을 따라, 나는 다른 사람들이 다른 방식으로 작동한다고 말하고 있습니다. 개인적으로 설명하는 방식으로 구성을 실시간으로 업데이트해야 할 필요가 없다고 생각합니다. 그것은 내가 잘못하는 것이 아니라 내가 일하는 방식이 아닙니다. :) 원하는 도구를 원하는 방식으로 제공하고 싶습니다. 실험과 학습을하는 한, 그것이 저에게 중요한 전부입니다.
Brett Lykins

답변:


19

Cisco 장치에서이 유형의 기능을 사용하려면 몇 가지 옵션이 있습니다. (사용하는 것은 사용자의 요구와 때로는 장치 및 IOS로드에 따라 다릅니다. 일부 구형 장치 / IOS로드는 기능이 다릅니다.)

편집 : 당신은이 질문에 대한 우리의 채팅에서 알 수 있듯이 1 분 마다이 작업을 수행하는 것에 대해 묻고 있습니다. (특히 GNS3에서) 아래 옵션을 사용하여 동시 백업을 자동화 할 수 있지만 1 분마다 그렇게하지 않는 것이 좋습니다.

다음 중 하나를 수행 할 수 있습니다.

  1. 명령 스케줄링 에는 Cisco의 Kron 기능 을 사용하십시오 . 이를 통해 미리 정의 된 명령을 예약 된 시간에 실행할 수 있습니다. 지적했듯이 copy run tftp파일 프롬프트 확인이 필요합니다. ( 파일 프롬프트 확인 기능을 해제 하지 않은 경우 일반적인 설정으로 사용하지 않는 것이 좋습니다.) 리디렉션에는 확인이 필요하지 않습니다. 스케줄러에 사용 된 명령은show run | redirect tftp://$SERVERIP/$PATH/$FILE

  2. 구성 관리에 Cisco의 아카이브 기능 을 사용하십시오 . 아카이브는 구성의 여러 사본을 순차적으로 저장하고 필요한 경우 이전 버전으로 구성을 롤백하는 방법입니다. Kron을 사용하여 복사하면 이전 구성을 덮어 쓰지만 Archive를 사용하면 지정된 위치에 최대 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

사실은 또 다른 방법은.

SNMP를 사용하여 TFTP 사본을 트리거 할 수 있습니다. 그것은 아니에요 정말 정직하고 있지만, 매우 유용합니다.

첫째, (의외로) TFTP 서버가 필요합니다. snmp 요청을 보낼 수있는 것도 필요합니다. 나는 리눅스의 snmp 툴로 효과적으로 해냈다.

쓰기 액세스가 제한된 SNMP에 대한 새 커뮤니티를 설정하고 IP ACL을 사용하여 더 잠글 수 있습니다. 실제로는 ccCopyTableOID 에만 쓸 수 있어야합니다 .

Linux 측에서는 기능보다는 가독성을 위해 다음 MIB가 필요합니다.

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

Linux에서 SNMP 구성을위한 관련 위치에 MIB를 설치하면 다음과 같이 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에서 copy 명령을 볼 수 있습니다.

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을 다시 확인하면 파일이 복사되었음을 나타내는 State 및 TimeStarted가 업데이트 된 것을 볼 수 있습니다.

ccCopyTable을 비우는 방법을 포함하여 아래의 소스 링크에 자세한 내용이 있습니다 (원하는 경우).

Linux 서버의 스크립트에서 동일한 방법을 사용하여 TFTP 복사를 트리거 한 다음 파일을 git에 커밋 한 다음 한 번의 빠른 프로세스로 리포지토리로 다시 푸시했습니다.

출처 : 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
이것이 최근에 더 많은 장치 지원을 받기 위해 RANCID로 전환 할 때까지 Pancho를 사용하여 수년 동안해온 방식입니다. RANCID는 버전 제어도 가능하기 때문에 강력히 권장됩니다. 'svn blame'을 사용 하여 인터페이스가 전이 중에서 자동으로 변경된 시기 를 확인하거나 x 개월 동안 아무것도 변경되지 않았 음을 증명하십시오.
AnotherHowie

RANCID가 SVN 대신 Git에 체크인 할 수 있습니까?
Tom O'Connor

나는 그렇게 생각하지 않습니다. CVS가 기본값입니다. SVN은 옵션입니다. 쓰기 전용, 단일 분기, 단일 사용자 (RANCID) 버전 제어 상황이므로 다른 것을 사용하면 특별한 이점이 없습니다. RANCID 3는 현재 작업 중이므로 해당 부분을 업데이트했을 가능성이 있습니다. 펄, 기대, 쉘-비교적 구식 소프트웨어입니다.
AnotherHowie

그냥 확인하고 RANCID 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, IOS에서 nexus (unfortunately ;-))를 지원하지 않습니다. IOS에서 지원됩니다 ... 모든 라우터와 대부분의 모든 스위치가 EEM을 지원한다고 생각합니다. 2950 년이지만 2960 년대에는 3560, 3750 (E가 아닌 E), 4500, 4948, 6500이 지원됩니다.
pyatka

2

RANCID 를 사용 하여이를 수행 할 수 있습니다 .

구성의 버전 제어, 이메일 차이 및 기타 좋은 것들과 같은 다른 좋은 것들이 있습니다 (기본적으로 하드웨어 인벤토리가 필요하므로 하드웨어가 변경되면 경고합니다).

그것은 내가 지금까지 던진 모든 스위치 및 라우터 (Cisco / Juniper / Dell)와 함께 작동합니다.


1

this 와 같은 펄 스크립트를 사용할 수 있습니다 . 용법: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 Firewalls, ProCurve, Alcatel Ethernet Routers (일명 Riverstone), Dell PowerConnect 스위치, Terayon 3200 /을 포함한 다양한 장치를 지원합니다. 3500 CMTS, Datacom DmSwitch 스위치, HP MSR 라우터, Mikrotik 라우터, Tellabs MSR 라우터, Juniper EX 스위치 JunOS, Oracle Acme 패킷, 오디오 코드 중간, Cisco IOS XR, NEC Univerge IX.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.