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.
Fügen Sie ein IUS-Repository hinzu.
# yum install -y https://centos7.iuscommunity.org/ius-release.rpm
Führen Sie den folgenden Befehl aus, um die Nebenversionen zu überprüfen, die installiert werden können.
# yum search python3
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)
Installieren Sie die Netmiko-Bibliothek.
# pip install netmiko
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