annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 
cancel
535
Visites
1
Compliment
0
Réponses

Quel est l'état des voisins OSPF de vos périphériques réseau?!

cherifi.m85
Spotlight
Spotlight

Dans ce poste, nous allons montrer comment utiliser Netmiko pour récupérer l’état des voisins OSPF d’un routeur.

Nous allons monter dans les blogs suivants comment appliquer le même cas par un autre framework et aussi dans de le cas de plusieurs périphériques.

Nous avons déjà installé Netmiko. Pour plus de détails, visitez https://github.com/ktbyers/netmiko (Merci Sir Kirk Byers!)

Voilà notre topologie en question !

Topologie.png

On va cibler les voisins OSPF de R1. Tous les routeurs ont été configurés

Le script est simple ! le voilà ! c’est simple de comprendre toutes les étapes !

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

# Parameters of R1
password = "cisco"

R1 = {
    "device_type": "cisco_ios",
    "host": "192.168.1.251",
    "username": "Admin",
    "password": password,
}
# Connect to R1 via SSH
net_connect = ConnectHandler(**R1)

# Retrieve the result of "show ip ospf neighbor" command
output = net_connect.send_command('show ip ospf neighbor')

# Display the result
pprint(output)

# End the SSH session for R1
net_connect.disconnect()

Voila le résultat !

Raw_Result.png

C’est simple! Non!

Ce résultat est mieux adapté pour lire en format brut. C’est mieux adapté pour l’être humain. Mais dans le cas d’application, il est nécessaire d’empaqueter le résultat dans un conteneur, d’où les parsers (analyseurs) sont utilisés.

Supposant on veut juste récupérer les adresses des voisins OSPF, et leur état (DR, BDR ou DROTHERS !) avec les interfaces connectées à ces derniers. Peut-être même stocker le résultat dans un fichier à part. A ce niveau, les parsers sont évoqués.

Tout d’abord, voilà la modification du script précédent avec l’utilisation d’un parser. Notons que pour le cas de Netmiko, le résultat est structuré dans des parsers provenu des librairies externes telles que :TextFSM, Genie ou bien TTP. Le cas le plus simple est d’utiliser TextFSM car elle est installée par défaut avec Netmiko.

Rien de compliqué, voilà la modification !

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

# Parameters of R1
password = "cisco"

R1 = {
    "device_type": "cisco_ios",
    "host": "192.168.1.251",
    "username": "Admin",
    "password": password,
}
# Connect to R1 via SSH
net_connect = ConnectHandler(**R1)

# Retrieve the result of "show ip ospf neighbor" command
output = net_connect.send_command('show ip ospf neighbor', use_textfsm=True)

# Display the result
pprint(output)

# End the SSH session for R1
net_connect.disconnect()

Voilà le résultat ! Vous remarquez que tout est structuré dans une liste Python contenant deux dictionnaires

Parsed_Result.png

Maintenant on va voir l’intérêt des parsers. Dans ce qui suit, on va essayer de récupérer les interfaces connectées, leurs adresses et l’état des voisins de R1, chose qu’on ne peut pas réaliser avec les données brutes. Voila le programme:

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

# Parameters of R1
password = "cisco"

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


# Connect to R1 via SSH
net_connect = ConnectHandler(**R1)

# Retrieve the parsed result of "show ip ospf neighbor" command
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 for R1
net_connect.disconnect()

Et le résultat !

Modified_Parsed_Result.png

Voilà un exemple intéressant ! dans le blog suivant, nous allons voir comment appliquer le même cas pour plusieurs périphériques ! à bientôt !

Voila le lien du répertoire sur Github: https://github.com/cherifimehdi/OSPF_neighbors_Netmiko_version_Case_one_device

S'il vous plaît, partagez et aimez-le ! Star it sur Github si vous l'avez trouvé utile et utile ! Merci

0 RÉPONSES 0