Automatisez la sauvegarde de la configuration (toutes les minutes) dans Cisco IOS

16

Je voudrais que mon routeur Cisco effectue automatiquement une copie TFTP (et remplisse automatiquement les champs) toutes les 1 minute. J'aimerais également qu'il soit exécuté en arrière-plan. Quelqu'un sait si c'est possible / comment le faire? Je voudrais le faire pour voir la configuration en cours de mes routeurs dans notepad ++ (qui se met à jour en temps réel) au lieu d'avoir à faire un show show et à appuyer sur la barre d'espace 4 ou 5 fois avant d'arriver à ce que j'ai besoin de voir. Je pense que ce serait extrêmement utile pour les laboratoires complexes. De plus, les macros ne fonctionnent pas car les commandes du serveur TFTP nécessitent une entrée.

Michael May
la source
3
Une fois par minute est-elle vraiment nécessaire? Avez-vous également envisagé d'utiliser le filtrage intégré sur la CLI avec regex pour filtrer les parties de la configuration en cours que vous souhaitez voir? C'est à dire | includeou | exclude? J'ai du mal à voir l'utilité de pouvoir visualiser vos configurations en cours "en temps réel".
John Jensen
J'aime avoir un moniteur avec ma topologie et mes fenêtres CLI (tabulées et étiquetées). Mon deuxième moniteur avec toutes les configurations en cours d'exécution de mes appareils en temps réel. Être en mesure de voir toutes mes config en cours d'exécution en temps réel facilite considérablement le dépannage, la comparaison et la copie / collage des blocs de commande. Surtout lorsque vous approfondissez les instructions de route-map et les ACL, c'est un énorme avantage de ne pas avoir à taper show run | s route-map plusieurs fois pour voir et comparer cette partie de la configuration avec différents appareils. Je suis désolé que vous ayez du mal à trouver cela utile, mais je suppose que chacun à son tour
Michael May
@JohnJensen bon point, je n'ai pas saisi la partie à chaque minute. Christian, avez-vous envisagé de simplement ouvrir une deuxième session ssh distincte à vos appareils sur le deuxième moniteur, plutôt que d'ouvrir les configurations en cours dans un document texte? Surveillez les sessions CLI de A pour les modifications et les sessions CLI de Monitor B pour afficher les configurations. Ne pas dire qu'une voie est meilleure que l'autre, juste jeter des idées. :)
Brett Lykins
Brett, 'show running-config' ne produit pas de sortie en temps réel. Je devrais taper show run à nouveau à chaque fois que je fais un changement et je devrais appuyer plusieurs fois sur la barre d'espace pour qu'il me montre toute la configuration. L'objectif est d'avoir des configurations complètes en cours d'exécution qui sont mises à jour presque dès que vous les modifiez sans intervention de l'utilisateur.
Michael May
@ ChristiandelaPeña Je vous suis, je dis juste que différentes personnes travaillent de différentes manières. Je suppose que personnellement, je ne vois pas la nécessité d'avoir des configurations de mise à jour en direct de la manière que vous décrivez. Cela ne fait pas de mal, tout simplement pas ma façon de travailler. :) Je veux vous donner les outils pour faire ce que vous voulez, comme vous le souhaitez. Tant que vous travaillez et apprenez, c'est tout ce qui m'importe.
Brett Lykins

Réponses:

19

Vous disposez de plusieurs options pour obtenir ce type de fonctionnalité sur un périphérique Cisco. (Celui que vous utilisez dépend de vos besoins et parfois de l'appareil et de la charge IOS. Certains appareils / charges IOS plus anciens auront des capacités différentes.)

EDIT: Vous demandez à faire cela toutes les minutes, ce qui, comme vous l'avez découvert dans notre discussion sur cette question, va bloquer votre routeur. (Surtout dans GNS3.) Les options ci-dessous sont disponibles pour automatiser la sauvegarde de la configuration, mais je ne recommanderais pas de le faire toutes les 1 minute.

Vous pouvez soit:

  1. Utilisez la fonctionnalité Kron de Cisco pour la planification des commandes. Cela vous permettra d'exécuter des commandes prédéfinies sur une base planifiée. Comme vous l'avez souligné, copy run tftpnécessite une confirmation d'invite de fichier. (Sauf si vous avez désactivé la confirmation d'invite de fichier , je ne le recommande pas comme paramètre normal.) La redirection ne nécessite pas de confirmation. La commande utilisée dans le planificateur est doncshow run | redirect tftp://$SERVERIP/$PATH/$FILE

  2. Utilisez la fonctionnalité Archive de Cisco pour la gestion de la configuration. L'archivage est un moyen de stocker plusieurs copies de la configuration de manière séquentielle et de restaurer les configurations si nécessaire dans une version précédente. La copie avec Kron écrase la configuration précédente, tandis que Archive vous permet de conserver jusqu'à 14 versions de configuration différentes à l'emplacement spécifié. Voir ce lien sur le réseau Cisco Learning pour plus d'informations utiles sur les archives. Plus précisément, comment définir dynamiquement le nom de fichier avec les balises $ h et $ t.

Dans l'un des exemples ci-dessous, vous pouvez ajuster les délais en fonction de vos besoins, c'est exactement ce que j'ai rapidement retiré de certains équipements de production.


Exemple de configuration pour que Kron écrive la configuration et la sauvegarde sur un serveur tftp une fois par semaine:

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

Exemple de configuration pour qu'Archive sauvegarde quotidiennement votre configuration sur un serveur tftp:

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

Il y a en fait une autre façon.

Vous pouvez déclencher une copie TFTP à l'aide de SNMP. Ce n'est pas terriblement avant droit, mais il est incroyablement utile.

Tout d'abord, vous aurez besoin d'un serveur TFTP (sans surprise). Vous aurez également besoin de quelque chose qui puisse envoyer des requêtes snmp. Je l'ai fait efficacement avec les outils snmp de Linux.

Vous voudrez mettre en place une nouvelle communauté pour SNMP qui dispose d'un accès en écriture limité, et probablement le verrouiller encore plus loin avec une ACL IP. En fait, il vous suffit de pouvoir écrire sur l' ccCopyTableOID.

Côté Linux, vous aurez besoin des MIB suivantes (pour plus de lisibilité, plutôt que de fonctionnalités)

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

Avec les MIB installées à l'emplacement approprié pour votre configuration SNMP sous Linux, vous devriez pouvoir tester la connectivité avec snmptable ainsi:

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

Vous devez généralement pré-créer le fichier sur le serveur TFTP pour le routeur dans lequel copier.

Pour déclencher une copie TFTP, vous devez insérer une ligne dans le ccCopyTable.

snmpset vous permet de le faire.

# 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

Une fois que vous avez fait cela, vous devriez pouvoir réexécuter la première commande et voir la commande de copie dans le 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"

Rien ne se passera tant que vous n'aurez pas défini une autre colonne sur ccCopyTable pour activer la ligne.

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

Si vous vérifiez à nouveau ccCopyTable, vous devriez voir que State et TimeStarted ont été mis à jour pour refléter que le fichier a été copié.

Il y a plus de détails dans les liens source ci-dessous, y compris comment vider ccCopyTable (si vous le souhaitez).

J'ai utilisé la même méthode dans un script à partir d'un serveur Linux pour déclencher une copie TFTP, puis valider le fichier dans git et le repousser dans le référentiel, le tout en un seul processus rapide.

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

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

Tom O'Connor
la source
2
C'est ainsi que je le fais depuis des années, en utilisant Pancho, jusqu'à ce que je passe récemment à RANCID pour obtenir plus de support pour les appareils. RANCID est fortement recommandé, uniquement parce que vous bénéficiez également d'un contrôle de version - utilisez 'svn blame' pour savoir quand cette interface est passée du full duplex à auto, ou prouver que rien n'a changé pendant x mois.
AnotherHowie
RANCID peut-il se connecter à Git plutôt qu'à SVN?
Tom O'Connor
Je ne pense pas. CVS est la valeur par défaut. SVN est une option. Comme il s'agit d'une situation de contrôle de version en écriture seule, à branche unique et à utilisateur unique (RANCID), il n'y a aucun avantage particulier à utiliser autre chose. RANCID 3 est en cours de préparation, il est donc possible qu'ils aient mis à jour cette partie. C'est un logiciel relativement démodé - perl, expect et shell.
AnotherHowie
Juste vérifié et RANCID 3 ne mentionne pas de nouvelles options VC, ici: gossamer-threads.com/lists/rancid/users/6555#6555
AnotherHowie
2

Vous pouvez utiliser EEM

Exemple:

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
la source
Seulement sur NX-OS, je soupçonne ...
Tom O'Connor
1
@Tom, je n'ai pas de connexion (malheureusement ;-)), dans IOS, il est pris en charge ... Je suppose que EEM est pris en charge par tous les routeurs et la plupart des commutateurs: par exemple, je n'ai qu'un seul modèle, qui ne prend pas en charge EEM - 2950, ​​mais dans les années 2960, 3560, 3750 (E et non E), 4500, 4948, 6500, il est pris en charge.
pyatka
2

Vous pouvez utiliser RANCID pour ce faire.

Vous obtenez quelques autres choses intéressantes telles que le contrôle de version des configurations, les différences d'e-mails et d'autres choses intéressantes (par défaut, cela prend un inventaire matériel, donc si le matériel change, vous obtenez une alerte avec cela).

Il fonctionne avec tous les commutateurs et routeurs que j'ai lancés jusqu'à présent (Cisco / Juniper / Dell), ce qui est un autre avantage.

shthead
la source
1

Vous pouvez utiliser un script perl, comme celui-ci . Usage:perl cisco_backup.pl "my-enable-password"

cisco
la source
1
Les publications contenant uniquement des liens sont limitées dans leur utilité. Pouvez-vous ajouter les parties pertinentes de cette solution à votre réponse?
Ryan Foley
Ne mettez jamais de mot de passe sur la ligne de commande si possible. Utilisez plutôt l'environnement.
Cougar
0

fetchconfig est un autre outil pour cela:

fetchconfig est un script Perl pour récupérer la configuration de plusieurs périphériques. Il a été testé sous Linux et Windows et prend actuellement en charge une variété de périphériques, notamment 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, Oracle Acme Packet, Audiocodes Mediant, Cisco IOS XR, NEC Univerge IX.

Everton
la source