Gestion du WI-FI & Hotspot via nmcli

🧾 Objectif général

Ce script Python permet de gérer les connexions Wi-Fi et de créer un point d’accès (Hotspot) en ligne de commande sur un système Linux. Il s’appuie sur les outils nmcli (de NetworkManager) et iwconfig pour :

  • Scanner les réseaux Wi-Fi disponibles
  • Obtenir des informations de connexion détaillées
  • Se connecter à un réseau Wi-Fi existant
  • Créer et configurer un hotspot local
  • Gérer les canaux Wi-Fi (bande 2.4 GHz)

🔧 Prérequis

  • Distribution Linux (Debian, Ubuntu, Raspberry Pi OS, etc.)
  • Interface Wi-Fi disponible (ex: wlan0)
  • Outils en ligne de commande installés :
    • nmcli (NetworkManager)
    • iwconfig (Wireless Tools)
  • Script lancé avec des droits suffisants (souvent sudo requis)

📚 Structure du script

🔁 run_cmd(cmd)

Exécute une commande shell, retourne la sortie standard. Affiche les erreurs sauf si ce sont des avertissements (Warning).

📶 freq_to_channel(freq_ghz)

Convertit une fréquence Wi-Fi (en GHz) en numéro de canal :

  • Utilise uniquement la bande 2.4 GHz (2412 à 2484 MHz)
  • Retourne None pour les autres bandes (ex: 5 GHz)

📊 dbm_to_percent(dbm)

Convertit une puissance du signal (en dBm) en pourcentage :

  • Linéaire entre -90 dBm (0%) et -30 dBm (100%)

🛰️ get_wifi_info(interface="wlan0")

Renvoie un dictionnaire contenant l’état de la connexion active:

  • SSID (nom du réseau)
  • Puissance du signal (en dBm et en %)
  • Fréquence (GHz)
  • Canal associé

📡 get_wifi_list()

Liste les réseaux Wi-Fi disponibles avec :

  • SSID
  • Qualité du signal (en %)
  • Résultat trié du plus fort au plus faible

🔥 set_hotspot(ssid, password, ip=None, channel=6)

Configure le mode point d’accès Wi-Fi (hotspot) avec :

  • ssid : nom du hotspot à créer
  • password : mot de passe WPA2
  • ip : IP locale pour le partage de connexion (ex: 192.168.4.1)
  • channel : canal Wi-Fi (par défaut : 6)

🌐 connect_wifi(ssid, password, ip=None)

Connexion à un réseau Wi-Fi existant :

  • Crée une nouvelle connexion au réseau nommé ssid
  • Configure l’adresse IP statique si souhaité

📌 Conseils pour le choix du canal en mode Hotspot

Choisir un bon canal Wi-Fi permet de limiter les interférences avec les autres réseaux et d’améliorer la qualité de la connexion.

📈 Méthode recommandée : scanner les réseaux voisins

Utilisez get_wifi_list() pour lister les réseaux et analyser ceux qui utilisent les canaux 1 à 14.

✅ Remarques et conseils

  • Canaux recommandés : 1, 6, 11
    • Ce sont les seuls canaux non chevauchants en 2.4 GHz.
    • Privilégier celui qui est le moins utilisé autour de vous.
  • Évitez un canal déjà saturé :
    • Si get_wifi_list() retourne de nombreux réseaux sur le canal 6, essayez 1 ou 11.
  • Canal 14 est uniquement autorisé au Japon.
  • Bande 5 GHz non supportée dans ce script (ajustable).
  • Supprimer les connexions précédentes (nmcli con delete) pour éviter les conflits.
  • Toujours tester les fonctions sur un réseau de test avant déploiement.
  • Pour usage autonome (ex: robot, serveur portable), préférer une IP fixe pour le hotspot.
  • S’assurer que NetworkManager gère l’interface wlan0.

🔐 Sécurité

  • Le mot de passe Wi-Fi est transmis en clair dans la commande : évitez d’utiliser des mots de passe sensibles dans les scripts produits.
  • Le hotspot est configuré en WPA2-PSK par défaut (suffisant pour usage personnel).

🚀 Avantages

  • ✅ Simple à intégrer dans un projet Python autonome (robot, IoT, serveur embarqué)
  • ✅ Pas besoin d’interface graphique
  • ✅ Permet la configuration complète d’un hotspot en quelques lignes

🧪 Exemples d’utilisation

1. Créer un hotspot sur le canal 1

Python

2. Se connecter à un réseau avec IP fixe

Python

3. Se connecter à un Raspberry Pi en mode hotspot avec RealVNC

Lorsque l’on utilise un Raspberry Pi sans écran, il est pratique de pouvoir y accéder à distance via une interface graphique. Si le Raspberry Pi est configuré en mode hotspot Wi-Fi (point d’accès), il peut créer son propre réseau Wi-Fi auquel on peut se connecter avec un ordinateur à l’aide de RealVNC.

Avant de commencer, il faut :

  • Avoir un Raspberry Pi configuré en mode hotspot Wi-Fi
  • Avoir installé et activé le serveur VNC sur le Raspberry Pi.
  • Avoir installé RealVNC Viewer sur l’ordinateur client (Windows, macOS ou Linux).
  • Connaître l’adresse IP locale du Raspberry Pi sur le réseau hotspot.

Connexion au réseau Wi-Fi créé par le Raspberry Pi

Sur l’ordinateur client (PC portable, etc.) :

  1. Rechercher les réseaux Wi-Fi disponibles.
  2. Se connecter à réseau hotspot avec le mot de passe correspondant.
  3. Une fois connecté, l’ordinateur est sur le même réseau local que le Raspberry Pi.

Connexion avec RealVNC Viewer

Ouvrir RealVNC Viewer sur l’ordinateur client et saisir l’adresse ip du Raspberry. Appuyez sur Entrée. Une fenêtre de connexion s’ouvre.

Entrez le nom d’utilisateur et le mot de passe du Raspberry Pi.

Cliquer sur OK.

Le bureau du Raspberry Pi doit s’afficher à l’écran.

En cas d’erreur de certificat ou de message d’avertissement, accepter simplement pour établir la connexion.


Source du script

Python

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *