Ssh stellt mit CentOS7 + Python3 + netmiko eine Verbindung zu Cisco Catalyst her und speichert die Konfiguration lokal

Überblick

Wenn ich ein Programm schreiben musste, um mit ssh auf Cisco-Switches (Catalyst 2960 usw.) zuzugreifen und die Konfiguration automatisch abzurufen und Informationen zu sammeln, kann dies anscheinend mit einer Python-Bibliothek namens netmiko realisiert werden. Deshalb habe ich eine Umgebung erstellt und ein Programm erstellt.

Da die Version von Python, die mit yum im Standard-Repository unter CentOS 7 installiert werden kann, die Serie 2 ist und netmiko nicht so funktioniert, wie es ist, wird auch das Verfahren zur Installation von Python3 beschrieben.

importieren

Fügen Sie ein IUS-Repository hinzu.

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

Bestätigung

Führen Sie den folgenden Befehl aus, um die Nebenversionen zu überprüfen, die installiert werden können.

# yum search python3

Installation

Installieren Sie derzeit die neueste Version von Python3.6 (Haupteinheit + Bibliothek, Entwicklung, Paketverwaltung usw.).

# 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 von Netmiko

Installieren Sie die Netmiko-Bibliothek.

# pip install netmiko

Beispielprogramm

Lesen Sie die CSV-Datei, in der die durch Kommas getrennte IP-Adresse und das Kennwort als Beispielprogramm beschrieben sind Schreiben Sie den Python-Code, der running-config speichert, in das angegebene Verzeichnis.

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

#Datumserfassungsprozess, um das Datum in die Konfigurationssicherungsdatei aufzunehmen
now = datetime.datetime.now()
today = now.strftime('%Y%m%d')

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

        #Lesen Sie eine Zeile der CSV-Datei, erhalten Sie die IP-Adresse und das Kennwort und schalten Sie den Vorgang ein
        for row in reader:
                cisco_ios = {
                        'device_type': 'cisco_ios', #Geben Sie für ssh die linke Seite an
                        'ip': row[0],               #Erste Spalte der CSV-Datei
                        'username': 'user_name',    #Tatsächlicher Benutzername
                        'password': row[1],         #Zweite Spalte der CSV-Datei
                        'port' : 22,                #Port-Nummer
                        'secret': row[1],           #geheimes Passwort aktivieren
                        'verbose': False,
                        }

                net_connect = ConnectHandler(**cisco_ios)

                #Wechseln Sie in den privilegierten Modus
                net_connect.enable()

                #Speichern Sie die laufende Konfiguration, um die Konfiguration mit dem Befehl zum Schreiben des Speichers zu starten
                net_connect.send_command('wr')
                # running-Holen Sie sich config
                output = net_connect.send_command('show running-config')
                #Hostnamen abrufen
                prompt = net_connect.find_prompt()
                hostname = prompt[:-1]

                #Schließen Sie unnötige Zeilen am Anfang aus
                list = output.split('\n')
                list = list[3:]
                config = '\n'.join(list)

                #Dateinamen erstellen
                file = 'store/' + hostname + '-' + today + '.txt'

                #Speichern Sie die Datei im Speicherverzeichnis
                with open(file, 'w') as backup:
                        backup.write(config)
                        print(hostname + ' : ' + 'succeeded')

                net_connect.disconnect()

Erstellen Sie außerdem ein Sicherungszielverzeichnis für die Konfigurationsdatei.

# mkdir store

Wenn Sie die py-Datei, die csv-Datei und das Speicherverzeichnis im selben Verzeichnis festlegen und die py-Datei ausführen, wird die laufende Konfiguration im Speicherverzeichnis im Format "Hostname-Jahr / Monat / Tag.txt" gespeichert.

# ls
backup.py  devices.csv  store

# python backup.py
switch1 : succeeded
switch2 : succeeded

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

Recommended Posts

Ssh stellt mit CentOS7 + Python3 + netmiko eine Verbindung zu Cisco Catalyst her und speichert die Konfiguration lokal
Stellen Sie mit Python eine Verbindung zu BigQuery her
Stellen Sie mit Python eine Verbindung zu Wikipedia her
Verbinden Sie realsense D435 mit einem PC, auf dem Ubuntu 16.04 installiert ist, und speichern Sie das Tiefenvideo mit Python
Bildschirm und geteilter Bildschirm mit Python- und SSH-Anmeldung am Remote-Server
Stellen Sie mit ssh-Verbindung vom Mac aus eine Verbindung zu centos6 auf der Virtualbox her
Cisco Catalyst IOS-Python und Bash unter XE
Fraktal zum Erstellen und Spielen mit Python
Ein Memo mit Python2.7 und Python3 in CentOS
Stellen Sie mit Python in Docker eine Verbindung zu MySQL her
CentOS 6.4, Python 2.7.3, Apache, mod_wsgi, Django
Stellen Sie mit AWS Lambda Python eine Verbindung zu s3 her
Stellen Sie mit dem Python-Interpreter von PEPPER Mac eine Verbindung zu Pfeffer her
So installieren Sie Python3 mit Docker Centos
Ich habe versucht, einen periodischen Prozess mit CentOS7, Selenium, Python und Chrome durchzuführen
Kratzen Sie das Essen mit Python und geben Sie es an CSV aus
MessagePack-Versuchen Sie, Java und Python mit RPC zu verbinden
Generierung der Vorlagen-Netzwerkkonfiguration mit Python und Jinja2
Stellen Sie mit Python auf Raspberry Pi eine Verbindung zu MySQL her
Prozedur zum Laden von MNIST mit Python und zur Ausgabe an png
Ich habe versucht, mit VOICEROID2 2 automatisch zu lesen und zu speichern
Ich möchte die Optimierung mit Python und CPlex behandeln
Probieren Sie die DB-Operation mit Python aus und visualisieren Sie sie mit d3
Ich habe versucht, mit VOICEROID2 automatisch zu lesen und zu speichern
Speichern Sie Listen, Wörterbücher und Tabellen in externen Python-Dateien
Einführung von Python 2.7 in CentOS 6.6
Verbinden Sie Python mit MySQL
Einfache Verwendung der Nifty Cloud API mit Botocore und Python
So installieren Sie Python2.7 python3.5 mit pyenv (unter RHEL5 CentOS5) (2016 Nov)
kobitonote.py - Mit Kobito bearbeitete Elemente in Evernote synchronisieren
[Python] Wie man mit Klassenvariablen mit Dekorator und Metaklasse spielt
Herstellen einer Verbindung zu verschiedenen DBs über Python (PEP 249) und SQL Alchemy
Versuchen Sie, ein Unterfenster mit PyQt5 und Python zu öffnen
[Lass uns mit Python spielen] Bildverarbeitung zu Monochrom und Punkten
Speichern Sie Bilder im Web mit Python (Colab) auf einem Laufwerk.
Konvertieren Sie Videos mit ffmpeg + python + opencv in Schwarzweiß
Ich habe versucht, die Benutzeroberfläche neben Python und Tkinter dreiäugig zu gestalten
Holen Sie sich zusätzliche Daten zu LDAP mit Python (Writer und Reader)
So melden Sie sich mit Python bei AtCoder an und senden automatisch
Verbinden Sie Raspberry Pi mit "Python" mit der Alibaba Cloud IoT Platform
Schließen Sie eine handelsübliche Webkamera an einen PC mit Ubuntu 16.04 an, der über USB installiert ist, und nehmen Sie ein Video mit Python auf
Ich war überrascht, wie man Objekte mit Python speichert, was schlank und sehr energiesparend ist.