Professional Documents
Culture Documents
Rapport Projet
Script Python, SNMP,
interrogation d'un
commutateur et lien avec le
DHCP
Réalisé par:
ABDELLI Samir
• def __get_MacColon(self, dhcpfile): fonction qui génère un fichier temporaire de fichier dhcp
original et qui détecte les anomalies et les erreurs (comme une adresse MAC à plus de 48
octets)
• def __double_mac_error(self): Détection des entrée "Double" dans le fichier DHCP. Les
anomalies seront retournées dans une liste "double_mac_error"
• def __double_dns_error(self): Détection des entrée "Double" dans le fichier DHCP. Les
anomalies seront retournées dans une liste "double_dns_error"
• def __fill_Zeros(self, mac_addr): fonction qui rajoute des zéros dans les adresses MAC.
Exemple: __fill_Zeros(0:4A:3:3B:4:AC) renvoie MAC = 00:4A:03:3B:0:AC
• def __get_HostIpName(self, ip_addr): fonction qui prend une adresse (ou nom DNS) et qui
renvoie le nom DNS (ou l'adresse IP)
• def __get_dnsReverse(self, ip_addr): fonction qui vérifie la présence d'une entrée inversée pour
un nom DNS ou une adresse IP
• def __get_device_Port(self, mac, community, agent, oid): fonction qui renvoie le port de
connexion d'un hôte en connaissant son adresse MAC
3 Comparaison
des adresses MAC
4 5
Liste Success Liste Fail
(MAC, IP, PORT) (MAC, PORT)
6
7
8 9
Remarque: le schéma ci-dessus présente uniquement les étapes clés du script. Le script créera, au fur et
à mesure, plusieurs listes et interrogera plusieurs tables au cours de son exécution.
(1) On récupère dans cette étape la liste des adresses MAC reliées au le commutateur. Cette
fonction retourne l'adresse MAC et le Port de associé
(2) On récupère à partir de cette table la liste des adresses MAC dans la cache ARP du
commutateur. Cette fonction retourne l'adresse MAC et l'adresse IP associé d'un poste qui fait
des requête de connexion
(3) Ici, le but est de rechercher les adresses IP des hôtes connectés au commutateur qui sont
présents, à la fois, dans la table dot1dBridge « (étape 1) et la cache ARP du commutateur(étape
2). En sortie il y aura deux liste: « Success » et « Fail »
(4) Cette liste « Success »contient les hôtes connectés au commutateur et qui sont dans la cache
ARP du commutateur. Donc, cette liste ne contient que des MAC et son adresse IP associé.
(5) Cette liste « Fail » contient toute les adresses MAC présentes sur le commutateur mais qui ne
sont pas dans la cache ARP du commutateur
(6) Le fichier « DHCP » fournit est modifié afin d'avoir un fichier pré-traité qui contient sur chaque
ligne l'adresse MAC et soit un nom DNS ou une adresse IP
(7) Dans cette étape, l'intérêt est de comparer le contenu de la liste « Fail » créée à l'étape (5) au
fichier « DHCP » créé à l'étape (6). Cette comparaison consiste à récupérer à partir du fichier
« DHCP » les nom DNS ou les adresses IP(selon la ligne) qui correspondent aux adresse MAC
présents dans la liste « Fail ». Cette opération de comparaison renvoie une nouvelle liste
appelée liste « New Fail » et une mise à jour de la liste « Success »
(8) Cette liste est une mise à jour de la liste « Success ». Cela dit, cette liste va contenir de
nouveaux éléments qui contiennent des adresses MAC des hôtes présents sur le commutateur et
soit un nom DNS soit une adresse IP. Avec toutes ces information sur un hôte, il est possible de
faire des contrôles de cohérence entre les résultats trouvés et le contenu du fichier « DHCP ».
(9) Cette deuxième liste contient la liste des adresses MAC des hôtes connectés au commutateur.
Ces adresses n'ont aucune occurrence ni dans la cache ARP du commutateur ni dans le fichier
DHCP. Autrement dit, ces adresses MAC ne sont pas inscrites dans le fichier « DHCP ».
Ce script détecte les anomalies dans le fichier « DHCP_File » et les affiche au début des résultats
d'exécution(erreur de format de l'adresse MAC, même nom DNS avec plusieurs adresses MAC ou bien
la même adresse MAC pour plusieurs noms DNS). Le problème est au niveau de l'étape (7). En effet, le
fait de récupérer une adresse IP ou un nom DNS à partir du fichier « DHCP », qui correspond à une
adresse MAC d'un hôte connecté au commutateur, n'est pas forcement juste et donc non sure. Et
Ce script dispose également d'un mode « OFFLINE » de test, à condition d'avoir deux fichier, qui sont:
• « Bridge.txt »: contient les adresse MAC présentes sur le commutateur , le format de fichier est
que sur chaque ligne on doit avoir le format suivant « Test_Me = Hex-STRING:
00:04:23:9A:8D:8A » pour chaque adresse MAC
• « Arp.txt »: contient les adresse MAC et IP de machine présentes dans la cache ARP du
commutateur. Le format de ce fichier est le suivant « 192.168.195.2 = STRING:
00:04:23:9A:8D:8A », l'adresse IP associé à chaque adresse MAC.
Propositions:
Ou, encore, faire un scan d'adresse IP « scan de la plage 192.168.195.1 à 192.168.195.254 » puis
chercher les adresses mac et leurs IP ou noms DNS correspondants
Conditions d'exécution:
MAC :
• adresses MAC des hôtes connectés au commutateur
IP :
• adresses IP des hôtes connectés au commutateur
PORT :
DNS Name :
• « UNKNOWN »: veut dire que le script n'a pas pu trouver le nom DNS
• « «REACHED » : dans le cas où aucun serveur DNS n'est trouvé dans la configuration du
système
in DHCP :
• « YES » signifie que l'adresse MAC existe dans le fichier « DHCP_File », et d'une valeur
• « NO » pour dire que l'adresse MAC n'a pas été trouvée dans ce fichier.
DNS_REVERSE :
• « NOERROR » qui garde le même résultat que celui de la commande « host » dans le champs
« Status » qui signifie que l'entée DNS inversée existe.
• « FAILED » est affichée au cas où l'entrée n'existe pas sur le serveur DNS du réseau auquel la
machine appartient.
Notes :
Cette colonne est pour les remarques.
• « NOCOH »: le nom DNS affiché est tiré du fichier « DHCP_File », et donc on ne peut pas
savoir si ce nom est juste ou pas.
• « NOCOH** (NO IP FOUND) »: Aucune information trouvée car cette adresse n'est pas la
cache ARP et ce hôte n'est pas dans le fichier DHCP
• « NOCOH FOUND (%Nom DNS%) »: C'est dans le cas où on trouve le <Nom DNS> qui
correspond à une adresse MAC tirée de fichier « DHCP_File » qui ne correspond pas à celui
trouvé avec la commande « host » <%Nom DNS%>
• « OK(%Nom DNS%) »: Les nom DNS trouvés dans le fichier « DHCP_File » et le résultat de
la commande « host » sont identiques.
• « Double DNS/IP Entry »: s'affiche dans le cas où la même adresse MAC possède différents
nom DNS (ou adresses IP).
(*) correspond aux hôtes qui ne sont pas présents dans le fichier DHCP
(**) correspond aux hôtes qui ne sont dans le fichier DHCP et que l'on a aucune information sur eux
de type adresse IP ou nom DNS
C'est un cas ou l'adresse IP est mentionnée dans le fichier mais avec une adresse MAC qui ne
correspond pas(pas la bonne adresse MAC)