Automatize o backup da configuração (a cada minuto) no Cisco IOS

16

Eu gostaria que meu roteador Cisco fizesse uma cópia executar TFTP automaticamente (e preencher os campos automaticamente) a cada 1 minuto. Eu também gostaria que fosse executado em segundo plano. Alguém sabe se isso é possível / como fazê-lo? Gostaria de fazer isso com o objetivo de visualizar a configuração em execução dos meus roteadores no bloco de notas ++ (que é atualizado em tempo real), em vez de ter que fazer um show run e pressionar a barra de espaço 4 ou 5 vezes antes de chegar ao que preciso ver. Eu acho que isso seria extraordinariamente útil para laboratórios complexos. Além disso, as macros não funcionam devido aos comandos do servidor TFTP que exigem entrada.

Michael May
fonte
3
Uma vez por minuto é realmente necessário? Você também considerou usar a filtragem incorporada na CLI com regex para filtrar as partes da configuração em execução que deseja ver? | includeOu seja, ou | exclude? Estou lutando para ver a utilidade de poder visualizar suas configurações em execução "em tempo real".
John Jensen
Eu gosto de ter um monitor com minha topologia e janelas CLI (com guias e rotuladas). Meu segundo monitor com todas as configurações em execução dos meus dispositivos em tempo real. Ser capaz de ver todas as minhas configurações de execução em tempo real facilita consideravelmente a solução de problemas, a comparação e a cópia / colagem de blocos de comandos. Especialmente ao se aprofundar nas instruções do mapa de rota e nas ACLs, é um grande benefício não precisar digitar show run | s traça o mapa várias vezes para ver e comparar esta parte da configuração com diferentes dispositivos. Sinto muito que você se esforce para achar isso útil, mas acho que cada um é seu.
Michael May
@ JohnJensen bom ponto, eu não entendi a parte a cada minuto. Cristão, você considerou apenas ter uma segunda sessão ssh separada aberta para seus dispositivos no segundo monitor, em vez de ter as configurações em execução abertas em um documento de texto? Monitore as sessões da CLI A para alterações e as sessões da CLI B para visualizar configurações. Não dizer que uma maneira é melhor que a outra, apenas lançar idéias por aí. :)
Brett Lykins
Brett, 'show running-config' não produz saída em tempo real. Eu precisaria digitar show run novamente toda vez que fizer uma alteração e precisaria pressionar a barra de espaço várias vezes para que ela me mostrasse toda a configuração. O objetivo é ter configurações de execução completas que são atualizadas quase assim que você as altera sem a intervenção do usuário.
11183 Michael May
@ ChristiandelaPeña Eu te sigo, só estou dizendo que pessoas diferentes trabalham de maneiras diferentes. Acho que pessoalmente não vejo a necessidade de atualizar as configurações da maneira que você está descrevendo. Isso não faz mal, mas não da maneira que eu trabalho. :) Quero lhe dar as ferramentas para fazer o que você quiser, do jeito que você quiser. Enquanto você estiver trabalhando e aprendendo, isso é tudo que importa para mim.
Brett Lykins

Respostas:

19

Você tem várias opções para obter esse tipo de funcionalidade em um dispositivo Cisco. (O que você usa depende de suas necessidades e, algumas vezes, do dispositivo e do IOS carrega. Alguns dispositivos mais antigos / carregamentos do IOS terão recursos diferentes.)

EDIT: Você está perguntando sobre isso a cada minuto, o que, como você descobriu em nosso bate-papo sobre esta questão, irá atolar o seu roteador. (Especialmente no GNS3.) As opções abaixo estão disponíveis para você automatizar o backup de confirmação, no entanto, eu não recomendaria fazê-lo a cada 1 minuto.

Você pode:

  1. Use a funcionalidade Kron da Cisco para agendamento de comandos. Isso permitirá que você execute comandos predefinidos em uma base agendada. Como você apontou, copy run tftprequer confirmação imediata do arquivo. (A menos que você tenha desativado a confirmação imediata do arquivo , no entanto, eu não a recomendo como uma configuração normal.) O redirecionamento não requer confirmação. Portanto, o comando usado no planejador éshow run | redirect tftp://$SERVERIP/$PATH/$FILE

  2. Use a funcionalidade de arquivamento da Cisco para gerenciamento de configuração. O arquivamento é uma maneira de armazenar várias cópias da configuração de maneira seqüencial e reverter as configurações, se necessário, para uma versão anterior. A cópia com o Kron substitui a configuração anterior, enquanto o Archive permite manter até 14 versões diferentes de configuração no local especificado. Veja este link na rede Cisco Learning para obter informações mais úteis sobre o Archive. Especificamente como definir dinamicamente o nome do arquivo com as tags $ he $ t.

Em qualquer uma das amostras abaixo, você pode ajustar os tempos de acordo com suas necessidades, e foi exatamente isso que tirei rapidamente de alguns equipamentos de produção.


Exemplo de configuração para que o Kron escreva a configuração e faça backup para um servidor tftp uma vez por semana:

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

Exemplo de configuração para que o Archive faça backup da sua configuração em um servidor tftp diariamente:

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

Na verdade, existe outro caminho.

Você pode acionar uma cópia TFTP usando SNMP. Não é muito simples, mas é incrivelmente útil.

Primeiro, você precisará de um servidor TFTP (sem surpresa). Você também precisará de algo que possa enviar solicitações snmp. Eu fiz isso efetivamente com as ferramentas snmp do Linux.

Você deseja configurar uma nova comunidade para SNMP que tenha acesso de gravação limitado e provavelmente trancá-lo ainda mais com uma IP ACL. Na verdade, você só precisa escrever no ccCopyTableOID.

No lado do Linux, você precisará dos seguintes MIBs (para facilitar a leitura, e não a funcionalidade)

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

Com os MIBs instalados no local relevante para a sua configuração SNMP no Linux, você poderá testar a conectividade com o snmptable da seguinte maneira:

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

Você geralmente precisa pré-criar o arquivo no servidor TFTP para o roteador copiar.

Para disparar uma cópia TFTP, você precisa inserir uma linha no ccCopyTable.

snmpset permite que você faça isso.

# 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

Depois de fazer isso, você poderá executar novamente o primeiro comando e ver o comando copy no 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"

Nada acontecerá até você definir outra coluna em ccCopyTable para ativar a linha.

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

Se você marcar ccCopyTable novamente, verá que State e TimeStarted foram atualizados para refletir que o arquivo foi copiado.

Há mais detalhes nos links de origem abaixo, incluindo como esvaziar o ccCopyTable (se desejar).

Usei o mesmo método em um script de um servidor Linux para disparar uma cópia TFTP, depois comprometer o arquivo com o git e enviá-lo de volta ao repositório, tudo em um processo rápido.

Fontes: http://www.ciscozine.com/2013/08/22/how-to-save-configurations-using-snmp/

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

Tom O'Connor
fonte
2
É assim que eu faço há anos, usando o Pancho, até que recentemente mudei para o RANCID para obter mais suporte ao dispositivo. O RANCID é altamente recomendado, apenas porque você também obtém controle de versão - use 'svn blame' para descobrir quando essa interface mudou de full duplex para automático ou provar que nada mudou por x meses.
AnotherHowie
O RANCID pode fazer check-in no Git em vez de no SVN?
Tom O'Connor
Acho que não. CVS é ​​o padrão. SVN é uma opção. Como é uma situação de controle de versão de gravação única, ramificação única e usuário único (RANCID), não há nenhum benefício específico em usar outra coisa. O RANCID 3 está em andamento no momento, portanto, é possível que eles tenham atualizado essa parte. Porém, é um software relativamente antiquado - perl, expect e shell.
AnotherHowie
Acabei de verificar e o RANCID 3 não menciona novas opções de VC, aqui: gossamer-threads.com/lists/rancid/users/6555#6555
AnotherHowie
2

Você pode usar o EEM

Exemplo:

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"
pyatka
fonte
Só no NX-OS, eu suspeito ...
Tom O'Connor
1
@ Tom, eu não tenho nexo (infelizmente ;-)), no IOS é suportado ... Acho que o EEM é suportado por todos os roteadores e acima de tudo switches: por exemplo, eu tenho apenas um modelo, que não é compatível com EEM - 2950, ​​mas nos 2960s, 3560, 3750 (E e não E), 4500, 4948, 6500 é suportado.
pyatka
2

Você pode usar o RANCID para fazer isso.

Você recebe algumas outras coisas legais, como controle de versão das configurações, diferenças de email e outras coisas legais (por padrão, é necessário um inventário de hardware; portanto, se o hardware mudar, você receberá um alerta com isso).

Ele funciona com todos os switches e roteadores que eu joguei até agora (Cisco / Juniper / Dell), o que é outra vantagem.

shthead
fonte
1

Você pode usar um script perl, como este . Uso:perl cisco_backup.pl "my-enable-password"

cisco
fonte
1
As postagens somente de link são limitadas em sua utilidade. Você pode adicionar as partes relevantes desta solução à sua resposta?
Ryan Foley
Nunca coloque a senha na linha de comando, se possível. Use o ambiente.
Cougar
0

O fetchconfig é outra ferramenta para isso:

fetchconfig é um script Perl para recuperar a configuração de vários dispositivos. Foi testado no Linux e Windows e atualmente suporta uma variedade de dispositivos, incluindo Cisco IOS, Cisco Catalyst, Cisco ASA, Cisco PIX, FortiGate Firewalls, ProCurve, Alcatel Ethernet Routers (aka Riverstone), Dell PowerConnect Switches, Terayon 3200 / 3500 CMTS, Datacom DmSwitch Switches, HP MSR Routers, Mikrotik Routers, Tellabs MSR Routers, Juniper EX Switch JunOS, Pacote Oracle Acme, Audiocodes Mediant, Cisco IOS XR, NEC Univerge IX.

Everton
fonte