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.
Ajoutez un référentiel IUS.
# yum install -y https://centos7.iuscommunity.org/ius-release.rpm
Exécutez la commande suivante pour vérifier les versions mineures qui peuvent être installées.
# yum search python3
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)
Installez la bibliothèque netmiko.
# pip install netmiko
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