(Py) Biblioteka Netmiko (Przykłady)*

Przykładowe zastosowanie biblioteki Netmiko

Przykładowy kod Python

Wyświetlanie informacji o urządzeniu + tworzenie sieci VLAN

Przykładowe wykorzystanie biblioteki Netmiko:

from netmiko import ConnectHandler

iosv_l2 = {
    'device_type': 'cisco_ios',
    'host':   '10.0.0.11',
    'username': 'rkkr',
    'password': 'rkkr',
    'port' : 22,
    #'secret': 'secret',
}

net_connect = ConnectHandler(**iosv_l2)
output = net_connect.send_command("show ip int brief")
print(output)

for n in range(10,16):
    print("Delating VLAN" + str(n))
    config_commands = ["vlan " + str(n), "name VLAN-" + str(n)]
    output = net_connect.send_config_set(config_commands)
    print(output)
  • Powyższy kod Netmiko, wyświetla listę interfejsów sieciowych a następnie tworzy wskazaną liczbę sieci VLAN.

Konfiguracja urządzeń zgodnie z komendami pobranymi z pliku tekstowego

Przykładowy kod umożliwiający konfigurację wielu urządzeń sieciowych:

from getpass import getpass
from netmiko import ConnectHandler

username = input("Login: ")
password = getpass(prompt="Hasło: ")

# Pobranie komend konfiguracyjnych z pliku tekstowego:
with open("comands_list") as file:
    commands_list = file.read().splitlines()

# Pobranie adresów IP z pliku tekstowego:
with open("ip_list") as file:
    ip_list = file.read().splitlines()

# Przejście pętli po każdym adresie IP, pobranym z pliku tekstowego:
for ip_address in ip_list:

    # Uzupełnienie danych dotyczących brakującego adresu IP:
    device = {
        'device_type': 'cisco_ios',
        'host': ip_address,
        'username': username,
        'password': password,
    }

    # Nawiązanie połączenia z wskazanym urządzeniem:
    net_connect = ConnectHandler(**device)
    print("Łączenia z urządzeniem: " + ip_address)

    # Wywołanie komendy 'show ip interfece brief': 
    outputshow = net_connect.send_command("show ip int brief")
    print(outputshow)

    # Wywołanie poszczególnych komend CLI, zapisanych w pliku tekstowym:
    output = net_connect.send_config_set(commands_list)
    print(output)

Obsługa błędów

Przykładowy kod umożliwiający konfigurację wielu urządzeń sieciowych:

from getpass import getpass
from netmiko import ConnectHandler
from netmiko.ssh_exception import NetMikoTimeoutException
from paramiko.ssh_exception import SSHException
from netmiko.ssh_exception import AuthenticationException

username = input("Login: ")
password = getpass(prompt="Hasło: ")

# Pobranie komend konfiguracyjnych z pliku tekstowego:
with open("comands_list") as file:
    commands_list = file.read().splitlines()

# Pobranie adresów IP z pliku tekstowego:
with open("ip_list") as file:
    ip_list = file.read().splitlines()

# Przejście pętli po każdym adresie IP, pobranym z pliku tekstowego:
for ip_address in ip_list:

    # Uzupełnienie danych dotyczących brakującego adresu IP:
    device = {
        'device_type': 'cisco_ios',
        'host': ip_address,
        'username': username,
        'password': password,
    }
    
    # Sprawdzenie wystąpienia błędów z połączeniem SSH:
    try:
        # Nawiązanie połączenia ze wskazanym urządzeniem:
        net_connect = ConnectHandler(**device)
        print("Łączenia z urządzeniem: " + ip_address)
    except(AuthenticationException):
        print("Nastąpił problem z uwieżytelnieniem połączenia do: " + ip_address)
        continue
    except(NetMikoTimeoutException):
        print("Przekroczono czas łączenia z: " + ip_address)
        continue
    except(SSHException):
        print("Nastąpił problem z połączeniem SSH, do adresu : " + ip_address)
        continue
    except Exception as unknown_error:
        print("Nastąpił nieznany bład z połączeniem: " + ip_address)
        print("Kod błędu:" + unknown_error)
        continue

    # Wywołanie komendy 'show ip interfece brief': 
    outputshow = net_connect.send_command("show ip int brief")
    print(outputshow)

    # Wywołanie poszczególnych komend CLI, zapisanych w pliku tekstowym:
    output = net_connect.send_config_set(commands_list)
    print(output)

Pozostałe tematy związane z bibliotekami / modułami Python

Podstawowe

Rozszerzone

SQL

PyQt 5

Automatyzacja

Data Mining

PDFPRINT

Robert T Kucharski

Cisco Network Engineer in GPW.

Dodaj komentarz