annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 
cancel
491
Visites
0
Compliment
0
Commentaires
cherifi.m85
Spotlight
Spotlight

Dans le blog précédent, nous avons vu comment récupérer l’état des voisins OSPF pour un seul périphérique. Maintenant, nous allons appliquer la même logique mais pour plusieurs périphériques réseau en utilisant Netmiko.

Tout d’abord ! le cas brut sans parsers ! ensuite avec parsers et on termine avec un cas d’application pour récupérer quelques données utiles.

On va garder la même topologie. Voila le lien du blog précédent : https://community.cisco.com/t5/discussions-de-routage-et-commutation/quel-est-l-%C3%A9tat-des-voisins-ospf-de-vos-p%C3%A9riph%C3%A9riques-r%C3%A9seau/td-p/4923547

Voila le script pour le premier cas:

# Import the ConnectHandler Function to create an Object for R1
from netmiko import ConnectHandler

# Parameters of Devices
password = "cisco"

R1 = {
    "device_type": "cisco_ios",
    "host": "192.168.1.251",
    "username": "Admin",
    "password": password,
}

R2 = {
    "device_type": "cisco_ios",
    "host": "192.168.1.252",
    "username": "Admin",
    "password": password,
}

R3 = {
    "device_type": "cisco_ios",
    "host": "192.168.1.253",
    "username": "Admin",
    "password": password,
}

Devices=[R1, R2, R3]

# Connect to R1 via SSH
for Device in Devices:

        net_connect = ConnectHandler(**Device)

        # Retrieve the result of "show ip ospf neighbor" command with the hostname of each device and display it
        print(net_connect.find_prompt()[:-1])
        output = net_connect.send_command('show ip ospf neighbor')
        print(output)
		print(90*'*')
        # End the SSH session
        net_connect.disconnect()

Voilà le résultat !

Raw.png

Comme nous l’avons indiqué, cet affichage est bien adapté pour l’être humain ! Pour le cas d’applications, nous avons besoins des données structurées dans des conteneurs : donc l’utilisation des parsers !

Voila la modification du script précédent ! Notons qu’on utilise TextFSM:

# Import the ConnectHandler Function to create an Object for R1
from netmiko import ConnectHandler
from pprint import pprint

# Parameters of Devices
password = "cisco"

R1 = {
    "device_type": "cisco_ios",
    "host": "192.168.1.251",
    "username": "Admin",
    "password": password,
}

R2 = {
    "device_type": "cisco_ios",
    "host": "192.168.1.252",
    "username": "Admin",
    "password": password,
}

R3 = {
    "device_type": "cisco_ios",
    "host": "192.168.1.253",
    "username": "Admin",
    "password": password,
}

Devices=[R1, R2, R3]

# Connect to R1 via SSH
for Device in Devices:

    net_connect = ConnectHandler(**Device)

    # Retrieve the result of "show ip ospf neighbor" command with the hostname of each device and display it
    print(net_connect.find_prompt()[:-1])
    output = net_connect.send_command('show ip ospf neighbor', use_textfsm=True)
    pprint(output)
	print(90*'*')
    # End the SSH session 
    net_connect.disconnect()

Et le résultat !

Parsed.png

Maintenant, on va essayer d’appliquer le même résonnement qu’avec le blog précédent pour monter l’utilité des parsers ! Pour chaque routeur, on va récupérer le ID de ses voisins OSPF, les interfaces locales directement connectées aux voisins et les adresses IP des voisins pour leurs interfaces connectées au routeur cible en question ! Ce n’est pas compliqué, voilà le script !:

# Import the ConnectHandler Function to create an Object for R1
from netmiko import ConnectHandler

# Parameters of Devices
password = "cisco"

R1 = {
    "device_type": "cisco_ios",
    "host": "192.168.1.251",
    "username": "Admin",
    "password": password,
}

R2 = {
    "device_type": "cisco_ios",
    "host": "192.168.1.252",
    "username": "Admin",
    "password": password,
}

R3 = {
    "device_type": "cisco_ios",
    "host": "192.168.1.253",
    "username": "Admin",
    "password": password,
}

Devices=[R1, R2, R3]

# Connect to R1 via SSH
for Device in Devices:

    net_connect = ConnectHandler(**Device)

    # Retrieve the result of "show ip ospf neighbor" command with the hostname of each device and display it
    print(120*'*')
    print(net_connect.find_prompt()[:-1])
    output = net_connect.send_command('show ip ospf neighbor', use_textfsm=True)
    # For each neighbor N: access to its ID, Interface, Address and State
    for N in output:
        Id, Interface, Address, State=N.get('neighbor_id'), N.get('interface'), N.get('address'), ((N.get('state')).split('/'))[1]
        print(f"Neighbor {Id}\n     - Connected to it via the interface: {Interface} having the address: {Address}, its state is {State}")
        # End the SSH session
        net_connect.disconnect()

Et le résultat !

Use_Case.png

Dans le blog suivant, nous allons voir comment appliquer le même cas avec un autre framework! à bientôt !

Voilà le lien du répertoire sur Github: https://github.com/cherifimehdi/OSPF_neighbors_Netmiko_Multi_Devices

Like it et Star it sur Github si vous l'avez trouvé utile! Merci

Mise en Route
Bienvenue dans la Communauté !

La communauté est un hub pour vous connecter avec vos pairs et les spécialistes Cisco, pour demander de l'aide, partager votre expertise, développer votre réseau et évoluer professionnellement.
Vous êtes un nouvel arrivant ? Cliquez ici pour en savoir plus.

Nous voulons que votre navigation soit la meilleure, donc vous trouverez des liens pour vous aider à être rapidement familiarisé avec la Communauté Cisco :