Wifi à la demande avec le vénérable Linksys WRT54G
Dans le cadre de mon travail, il m'a été demandé de mettre en place pour un centre d'animation un petit réseau wifi afin que les adhérents puissent se connecter à Internet : deux ordinateurs fixe sous Debian et un point d'accès Wifi. J'ai donc recyclé une vieille unité centrale pour en faire un petit routeur proxy filtrant avec ipfire et un vénérable Linksys WRT54G qui traînait.
Les postes sous Debian sont en accès libre toute la journée mais les animateurs voulaient que le wifi soit activé certains jours de 14h à 18h et éventuellement à la demande. Le WRT54G sert à la fois de switch réseau et de point d'accès Wifi. Bien entendu il y a OpenWRT d'installé dessus avec le SSH d'activé (son adresse est 10.0.0.250).
Mise en place d'un script pour l'activation-désactivation du Wifi
La première étape est la création d'un script shell pour activer désactiver l'interface wifi du Linksys. Connectons nous à notre Linksys
ssh root@10.0.0.250
Créons le fichier contenant le script, rendons-le exécutable et ouvrons-le avec vi.
touch /sbin/wtoggle.sh
chmod + x /sbin/wtoggle.sh
vi /sbin/wtoggle.sh
Il suffit maintenant de coller les commandes ci-dessous.
#!/bin/sh device="wl0" case $1 in "disable") wifi down $device echo 0 > /proc/diag/led/ses_white echo 1 > /proc/diag/led/ses_orange echo 0 > /proc/diag/led/wlan uci set wireless.$device.disabled=1 uci commit wireless logger "Wifi disabled" ;; "enable") uci set wireless.$device.disabled=0 uci commit wireless wifi up $device echo 1 > /proc/diag/led/ses_white echo 0 > /proc/diag/led/ses_orange echo 2 > /proc/diag/led/wlan logger "Wifi enabled" ;; esac
Le script fait trois choses :
- Activer / Désactiver le point d'accès Wifi
- Allumer la diode SES en blanc / orange en fonction de l'état de la connexion
- Activer / désactiver la diode WLAN
L'utilisation est simple : wtoggle enable
pour activer le wifi et wtoggle disable
pour le désactiver.
Créer la tache cron pour activer le wifi à certaines heures
Il suffit d'ajouter les deux lignes suivantes au cron pour programmer la mise en route du Wifi avec la commande crontab -e
00 14 * * 1-6 wtoggle enable
00 18 * * 1-6 wtoggle disable
Le réseau Wifi est donc allumé du lundi au samedi de 14h à 18h. Mais sur Openwrt le service cron n'est pas activé1. Il faut donc le faire avec les commandes2
/etc/init.d/cron start
/etc/init.d/cron enable
Activation / désactivation à la demande du Wifi
Il est parfois nécessaire d'allumer ou d'éteindre le wifi manuellement, pour ça nous allons détourner le bouton SES du routeur (vous savez celui avec le logo cisco dessus). si le Wifi est désactivé, une pression sur ce bouton l'activera et une autre pression le désactivera à nouveau.
Créons un fichiers bouttons
dans le répertoire /etc/hotswap.d/button/
qui va contenir les commandes à effectuer lors de la pression d'un boutons sur le Linksys
mkdir -p /etc/hotswap.d/button/
vi /etc/hotswap.d/button/buttons
Voici le contenu de ce fichier
#!/bin/sh device="wl0" if [ "$BUTTON" = "ses" ] && [ "$ACTION" = "pressed" ] ; then case $(uci get wireless.$device.disabled) in 0) /sbin/wtoggle.sh disable ;; 1) /sbin/wtoggle.sh enable ;; esac fi
Une fois enregistré, le tout devrait fonctionner : le bouton SES pour allumer /éteindre le wifi et la tâche cron pour le faire automatiquement en fonction des heures d'ouvertures. Le voyant du logo Cisco servant aux animateurs à visualiser rapidement si le réseau Wifi est actif ou non.
-
voir sur la documentation d'openwrt ↩
-
voir sur la documentation d'openwrt ↩