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