URL: https://linuxfr.org/forums/programmation-shell/posts/activerd%C3%A9sactiver-le-wifi-dune-freebox-v6-depuis-le-r%C3%A9seau-local Title: Activer/désactiver le Wifi d'une Freebox V6 depuis le réseau local Authors: skimpax Date: 2011年11月28日T14:08:22+01:00 Tags: free et wifi Score: 8 Bonjour, [edit du 29/11/11 : mise à jour du script suite au conseil de BFG] ### Le besoin : Avoir la possibilité de désactiver et désactiver le Wifi de ma Freebox v6 (dite 'revolution') à des horaires définis, et ceci sans intervention humaine. ### Le but : Le but est de définir des plages horaires où le Wifi sera actif, le reste du temps il sera coupé. Je ne m'étendrais pas sur la motivation d'une telle démarche : pour moi, c'est une simple règle de bon sens, tout comme on éteint la lumière en partant... ### Comment : Le script reçoit 1 seul paramètre qui peut être : [on, off, status] Le but est d'appeler ce script depuis la crontab pour activer/désactiver le wifi selon le besoin. Un élément de mon réseau local (un NAS en l'occurence) enverra les ordres d'activation/désactivation du Wifi à la Freebox. J'ai donc placé ce script et configuré la crontab du NAS à ma convenance. Le script utilise curl pour envoyer les ordres au serveur web interne de la Freebox comme si un utilisateur s'y connectait et changeait l'état de la connexion Wifi sur la page dédiée. La seule adaptation nécessaire est le mot de passe (cf. fbxPasswd) qui doit être modifié pour y mettre celui correspondant à votre Freebox. J'utilise le canal 9 (channel=9) et 20MHz (ht_mode=20) de largeur de bande : à adapter éventuellement. Le script retourne 1 si le Wifi est activé, 0 sinon. ### Divers : Bien évidemment, une intervention manuelle sur le menu tactile du Freebox Server ou via l'interface web http://mafreebox.freebox.fr est toujours possible pour forcer l'état. De même qu'il est évident que l'élément envoyant les ordres à la Freebox doit être relié filairement à cette dernière... ### Remarque : Sur la commande 'status', je suis pollué par le code html retourné par le serveur, j'aurais juste aimé n'avoir que ma trace "Freebox Wifi is XX". 'option curl --silent n'y fait rien. Des idées ? ### Exemple de crontab : e.g. Wifi activé tous les jours de 7h30 à 8h30 et de 17h30 à 22h00 uniquement. ```bash 30 7 * * * /chemin/script/fbxWifi.sh on 30 8 * * * /chemin/script/fbxWifi.sh off 30 17 * * * /chemin/script/fbxWifi.sh on 00 22 * * * /chemin/script/fbxWifi.sh off ``` ### Le script : ```bash #!/bin/bash fbxLogin='freebox' fbxPasswd='monMotDePasse' fbxCookieFile="/tmp/fbxCookie.txt" fbxLogin() { curl --cookie-jar $fbxCookieFile -s -o /dev/null -L "http://mafreebox.freebox.fr/login.php?login=$fbxLogin&passwd=$fbxPasswd" if [ $? -ne 0 ]; then echo "Login to Freebox failed!" exit 0 fi } fbxLogout() { curl -b $fbxCookieFile -s -o /dev/null -L 'http://mafreebox.freebox.fr/login.php?logout=1' rm -f $fbxCookieFile if [ $? -ne 0 ]; then echo "Logout of Freebox failed!" fi } wifiOn() { fbxLogin curl -b $fbxCookieFile -s -o /dev/null -d 'enabled=on&channel=9&ht_mode=20&method=wifi.ap_params_set&config=Valider' -H "X-Requested-With: XMLHttpRequest" -L 'http://mafreebox.freebox.fr/wifi.cgi' # | w3m -dump -T text/html if [ $? -ne 0 ]; then echo "Setting Freebox wifi ON failed!" fi fbxLogout } wifiOff() { fbxLogin curl -b $fbxCookieFile -s -o /dev/null -d 'channel=9&ht_mode=20&method=wifi.ap_params_set&config=Valider' -H "X-Requested-With: XMLHttpRequest" -L 'http://mafreebox.freebox.fr/wifi.cgi' # | w3m -dump -T text/html if [ $? -ne 0 ]; then echo "Setting Freebox wifi OFF failed!" fi fbxLogout } wifiStatus() { fbxLogin checked=$(curl -b $fbxCookieFile -s -L 'http://mafreebox.freebox.fr/settings.php?page=wifi_conf' | grep '') rc=0 if [ "$checked" != "" ]; then echo "Freebox Wifi is ON" rc=1 else echo "Freebox Wifi is OFF" fi fbxLogout exit $rc } case "1ドル" in on) wifiOn exit 1 ;; off) wifiOff exit 0 ;; status) wifiStatus exit $? ;; *) echo "Usage: 0ドル {on|off|status}" exit 0 esac exit 0 ```

AltStyle によって変換されたページ (->オリジナル) /