(Py) Biblioteka NAPALM*

Biblioteka NAPALM

Instalacja biblioteki NAPALM (Linux)

linux$ sudo apt-get install python3-pip

Pobiera a następnie instaluje pakiet PIP, umożliwiający instalację innych modułów / bibliotek Python-a.

linux$ sudo pip3 install -U netmiko

Pobiera a następnie instaluje bibliotekę Netmiko.

linux$ sudo pip3 install -U napalm

Pobiera a następnie instaluje bibliotekę NAPALM.

linux$ sudo pip3 install -U simplejson

Pobiera a następnie instaluje bibliotekę Simplejson.

Przykładowe zastosowanie biblioteki NAPALM

Wyświetlanie danych

Przykładowe wykorzystanie biblioteki NAPALM:

import json
from napalm import get_network_driver

# Pobiera adresy IP z pliku tekstowego:
with open("ip.txt") as file:
    line = file.read().splitlines()

# Pętla nawiązująca połączenie z wszystkimi adresami IP, pobranymi z pliku tekstowego.
for IP in line:
    driver = get_network_driver("ios")
    device = driver(IP, "login", "password")
    device.open()

    # Funkcja biblioteki NAPAL, umożliwiająca pobranie podstawowych informacji na temat danego urządzenia.
    output = device.get_facts()
    print(json.dumps(output, indent=4))
    device.close()
  • Powyższy kod wyświetla listę najważniejszych informacji dotyczących, urządzeń pobranych z pliku tekstowego (W tym czas działania systemu, wersje systemu, numer seryjny urządzenia, nazwę urządzenia jak i listę interfejsów sieciowych.

NAPALM Cisco Matrix

  • get_arp_table – Wyświetla szczegółowe informacje o wszystkich wpisach tablicy ARP.
  • get_bgp_config – Wyświetla
  • get_bgp_neighbors – Wyświetla
  • get_bgp_neighbors_detail – Wyświetla
  • get_config – Wyświetla
  • get_environment – Wyświetla
  • get_facts – Wyświetla podstawowe informacje na temat danego urządzenia.
  • get_interfaces – Wyświetla szczegółowe informacje o wszystkich interfejsach sieciowych.
  • get_interfaces_counters – Wyświetla
  • get_interfaces_ip – Wyświetla
  • get_ipv6_neighbors_table – Wyświetla
  • get_lldp_neighbors – Wyświetla
  • get_lldp_neighbors_detail – Wyświetla
  • get_mac_address_table – Wyświetla
  • get_network_instances – Wyświetla
  • get_ntp_peers – Wyświetla
  • get_ntp_servers – Wyświetla
  • get_ntp_stats – Wyświetla
  • get_optics – Wyświetla
  • get_probes_config – Wyświetla
  • get_route_to – Wyświetla
  • get_snmp_information – Wyświetla
  • get_users – Wyświetla
  • is_alive – Wyświetla
  • ping(„adres_IP„) – Wyświetla
  • traceroute(„adres_IP„) – Wyświetla

Zmiana konfiguracji

Konfigurowanie urządzeń sieciowych z wykorzystaniem biblioteki NAPALM, wymaga aby urządzenie sieciowe miało aktywowany serwer SCP. Z wykorzystaniem komendy [ip scp server enable] wydanej w trybie konfiguracji globalnej.
Przykładowe wykorzystanie biblioteki NAPALM:

import json
from napalm import get_network_driver

# Pobiera adresy IP z pliku tekstowego:
with open("ip.txt") as file:
    line = file.read().splitlines()

# Pętla nawiązująca połączenie z wszystkimi adresami IP, pobranymi z pliku tekstowego.
for IP in line:
    driver = get_network_driver("ios")
    device = driver(IP, "rkkr", "rkkr")
    device.open()
    print("Łączenie z urządzeniem: " + IP)

    # Funkcja pobierająca konfigurację z pliku tekstowego.
    device.load_merge_candidate(filename="comands.cfg")
   
    # Funkcja sprawdzająca ilość zmian względem obecnej konfiguracji urządzenia.
    diffs = device.compare_config()

    if len(diffs) > 0:
        print(diffs)
        device.commit_config()
    else:
        print("Konfiguracja urządzenia jest aktualna")
        print("Nie dokonano żadnych zmian na urzadzeniu")
        device.discard_config()
        
    device.close()
  • Powyższy kod sprawdza czy obecna konfiguracja urządzenia jest aktualna, jeżeli nie wprowadza zmiany zapisane w pliku testowym (Komendy zapisane w pliku tekstowym są sprawdzane 1:1 z wydrukiem komendy [show running-config], związku z tym wszystkie komendy z pliku muszą być zapisane w taki sam sposób w jaki system Cisco IOS zapisuje je w konfiguracji bieżącej. W przeciwnym wypadku biblioteka NAPALM nie wykryje ich jako bieżącej konfiguracji urządzenia).

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