Skip to content

Description de l'implémentation des fonctions la bibliothèque Utils pour Python

Récupération de la mac adresse

La fonction get_mac_address qui récupère l'adresse MAC d'une interface réseau spécifiée sur un Raspberry Pi. La fonction utilise des commandes système pour obtenir les informations réseau et des expressions régulières pour extraire l'adresse MAC.

Bibliothèques importées

  • re : La bibliothèque re fournit des opérations de correspondance de motifs via des expressions régulières. Elle est utilisée ici pour rechercher et extraire l'adresse MAC du résultat de la commande système.
  • subprocess : La bibliothèque subprocess permet d'exécuter des commandes système. Dans ce code, elle est utilisée pour exécuter la commande ifconfig et récupérer les informations réseau.

Fonction : get_mac_address

La fonction get_mac_address(interface) récupère l'adresse MAC de l'interface réseau spécifiée.

Paramètres

  • interface (str) : Le nom de l'interface réseau pour laquelle récupérer l'adresse MAC (par exemple, "eth0", "wlan0").

Retourne

  • (str) : L'adresse MAC de l'interface réseau sous forme de chaîne de caractères si elle est trouvée, sinon None.

Fonctionnement

  1. Exécution de la commande système :

    result = subprocess.check_output(["ifconfig", interface])
    
    La commande ifconfig est exécutée pour l'interface spécifiée, et le résultat est capturé.

  2. Décodage et recherche de l'adresse MAC :

    mac_address = re.search(r"([0-9a-f]{2}:){5}[0-9a-f]{2}", str(result.decode()))
    
    Le résultat de la commande ifconfig est décodé en une chaîne de caractères. Une expression régulière est utilisée pour rechercher le motif d'une adresse MAC dans la chaîne.

  3. Retour de l'adresse MAC :

    if mac_address:
        return mac_address.group(0)
    else:
        return None
    
    Si une adresse MAC est trouvée, elle est retournée. Sinon, la fonction retourne None.

  4. Gestion des exceptions :

    except Exception as e:
        return None
    
    Si une exception se produit lors de l'exécution de la commande ou de la recherche de l'adresse MAC, la fonction retourne None.

Code complet

import re
import subprocess

def get_mac_address(interface):
    """Recupére la mac adresse du raspberry"""
    try:
        result = subprocess.check_output(["ifconfig", interface])
        mac_address = re.search(r"([0-9a-f]{2}:){5}[0-9a-f]{2}", str(result.decode()))
        if mac_address:
            return mac_address.group(0)
        else:
            return None
    except Exception as e:
        return None

Explication du code

  • Commande ifconfig : La commande ifconfig est utilisée pour afficher les configurations réseau des interfaces sur un système Unix/Linux. Elle inclut des informations telles que l'adresse IP, l'adresse MAC, et l'état de l'interface.

  • Expression régulière : L'expression régulière r"([0-9a-f]{2}:){5}[0-9a-f]{2}" correspond au format d'une adresse MAC (six paires de caractères hexadécimaux séparées par des deux-points).

  • Décodage de la sortie de la commande : La sortie de la commande ifconfig est en bytes. La méthode decode() convertit ces bytes en une chaîne de caractères pour permettre l'analyse textuelle.

  • Gestion des exceptions : La gestion des exceptions garantit que la fonction retourne None en cas de problème (par exemple, si l'interface réseau n'existe pas ou si la commande ifconfig échoue).