Connectez-vous à Cisco Catalyst avec CentOS7 + Python3 + netmiko et enregistrez la configuration localement

Aperçu

Quand j'avais besoin d'écrire un programme pour accéder aux commutateurs Cisco (Catalyst 2960 etc.) avec ssh et acquérir automatiquement la configuration et les informations collectées, il semble que cela puisse être réalisé avec une bibliothèque python appelée netmiko, j'ai donc construit un environnement et créé un programme.

De plus, étant donné que la version de python qui peut être installée avec yum dans le référentiel par défaut sur CentOS 7 est la série 2 et que netmiko ne fonctionne pas tel quel, la procédure d'installation de python3 est également décrite.

importer

Ajoutez un référentiel IUS.

# yum install -y https://centos7.iuscommunity.org/ius-release.rpm

Vérification

Exécutez la commande suivante pour vérifier les versions mineures qui peuvent être installées.

# yum search python3

Installation

Installez le dernier python3.6 (unité principale + bibliothèque, développement, gestion des paquets, etc.) pour le moment.

# yum install -y python36u python36u-libs python36u-devel python36u-pip

# python -V
Python 3.6.8

# pip -V
pip 9.0.3 from /usr/lib/python3.6/site-packages (python 3.6)

installation de netmiko

Installez la bibliothèque netmiko.

# pip install netmiko

Exemple de programme

Lisez le fichier csv qui décrit l'adresse IP et le mot de passe séparés par des virgules comme exemple de programme Écrivez le code python qui enregistre running-config dans le répertoire spécifié.

devices.csv


192.168.1.254,password1234
172.16.1.254,password5678

backup.py


#!/usr/bin/env python

from netmiko import ConnectHandler
import csv
import datetime

#Processus d'acquisition de la date pour inclure la date dans le fichier de sauvegarde de la configuration
now = datetime.datetime.now()
today = now.strftime('%Y%m%d')

with open('devices.csv') as f:
        reader = csv.reader(f)

        #Lisez une ligne de fichier csv, obtenez l'adresse IP et le mot de passe et activez le processus
        for row in reader:
                cisco_ios = {
                        'device_type': 'cisco_ios', #Pour ssh, spécifiez la gauche
                        'ip': row[0],               #Première colonne du fichier csv
                        'username': 'user_name',    #Nom d'utilisateur réel
                        'password': row[1],         #Deuxième colonne du fichier csv
                        'port' : 22,                #numéro de port
                        'secret': row[1],           #activer le mot de passe secret
                        'verbose': False,
                        }

                net_connect = ConnectHandler(**cisco_ios)

                #Passer en mode privilégié
                net_connect.enable()

                #Enregistrez la configuration en cours dans la configuration de démarrage avec la commande write memory
                net_connect.send_command('wr')
                # running-Obtenir la configuration
                output = net_connect.send_command('show running-config')
                #Obtenir le nom d'hôte
                prompt = net_connect.find_prompt()
                hostname = prompt[:-1]

                #Exclure les lignes inutiles au début
                list = output.split('\n')
                list = list[3:]
                config = '\n'.join(list)

                #Créer un nom de fichier
                file = 'store/' + hostname + '-' + today + '.txt'

                #Enregistrez le fichier dans le répertoire du magasin
                with open(file, 'w') as backup:
                        backup.write(config)
                        print(hostname + ' : ' + 'succeeded')

                net_connect.disconnect()

Créez également un répertoire de destination de sauvegarde pour le fichier de configuration.

# mkdir store

Si vous définissez le fichier py, le fichier csv et le répertoire de stockage dans le même répertoire et exécutez le fichier py, la configuration en cours d'exécution sera enregistrée dans le répertoire de magasin au format "nom d'hôte-année / mois / jour.txt".

# ls
backup.py  devices.csv  store

# python backup.py
switch1 : succeeded
switch2 : succeeded

# ls store/
switch1-20200205.txt  switch2-20200205.txt

Recommended Posts

Connectez-vous à Cisco Catalyst avec CentOS7 + Python3 + netmiko et enregistrez la configuration localement
Connectez-vous à BigQuery avec Python
Connectez-vous à Wikipedia avec Python
Connectez realsense D435 à un PC sur lequel Ubuntu 16.04 est installé et enregistrez la vidéo de profondeur avec python
écran et écran partagé avec connexion python et ssh au serveur distant
Connectez-vous à centos6 sur Virtualbox avec une connexion SSH depuis Mac
Cisco Catalyst IOS-Python et Bash sur XE
Fractal pour faire et jouer avec Python
Un mémo contenant Python2.7 et Python3 dans CentOS
Connectez-vous à MySQL avec Python dans Docker
CentOS 6.4, Python 2.7.3, Apache, mod_wsgi, Django
Connectez-vous à s3 avec AWS Lambda Python
Connectez-vous à Pepper avec l'interpréteur Python de PEPPER Mac
Comment installer python3 avec docker centos
J'ai essayé de faire un processus périodique avec CentOS7, Selenium, Python et Chrome
Grattage de la nourriture avec python et sortie en CSV
MessagePack-Try pour lier Java et Python avec RPC
Génération de configuration de réseau de modèles avec Python et Jinja2
Connectez-vous à MySQL avec Python sur Raspberry Pi
Procédure pour charger MNIST avec python et sortie en png
J'ai essayé de lire et d'enregistrer automatiquement avec VOICEROID2 2
Je veux gérer l'optimisation avec python et cplex
Essayez le fonctionnement de la base de données avec Python et visualisez avec d3
J'ai essayé de lire et d'enregistrer automatiquement avec VOICEROID2
Enregistrer des listes, des dictionnaires et des taples dans des fichiers externes python
Introduction de Python 2.7 à CentOS 6.6
Connectez python à mysql
API Nifty Cloud facile à utiliser avec botocore et python
Comment installer Python2.7 python3.5 avec pyenv (sur RHEL5 CentOS5) (novembre 2016)
kobitonote.py --Synchroniser les éléments de sauvegarde modifiés avec Kobito vers Evernote
[Python] Comment jouer avec les variables de classe avec décorateur et métaclasse
Comment se connecter à diverses bases de données à partir de Python (PEP 249) et SQL Alchemy
Essayez d'ouvrir une sous-fenêtre avec PyQt5 et Python
[Jouons avec Python] Traitement d'image en monochrome et points
Enregistrer des images sur le Web sur un lecteur avec Python (Colab)
Convertir une vidéo en noir et blanc avec ffmpeg + python + opencv
J'ai essayé de créer une interface graphique à trois yeux côte à côte avec Python et Tkinter
Obtenez des données supplémentaires vers LDAP avec python (Writer et Reader)
Comment se connecter à AtCoder avec Python et soumettre automatiquement
Connectez Raspberry Pi à Alibaba Cloud IoT Platform avec «Python»
Connectez une caméra Web disponible dans le commerce à un PC avec ubuntu 16.04 installé via USB et capturez une vidéo avec python
J'ai été surpris de savoir comment enregistrer des objets avec python, qui est léger et très économe en énergie.