Anem a veure com ho podem aconseguir. En primer lloc, hem de poder detectar si la xarxa sense fils està activada o no, i si hi ha algú connectat. Accedim a l'encaminador i provem les comandes:
$ ssh root@gargoyle root@gargoyle password: xxxxxxx root@Gargoyle:~# iwconfig wlan0 root@Gargoyle:~# iwconfig wlan1 root@Gargoyle:~# iw dev wlan0 station dump root@Gargoyle:~# iw dev wlan1 station dumpLes dues primeres comandes verifiquen l'estat de la xarxa sense fils de 2.4GHz (wlan0) i la de 5GHz (wlan1). Les dues següents ens informes dels ordinadors connectats, si n'hi ha cap.
Amb això ja estem en condicions d'escriure un petit script per la nostra tasca. La idea de base la vaig agafar d'un missatge dels fòrums d'Openwrt. El resultat és aquest:
#!/bin/sh LOG=/tmp/autowifi.log SW=$(iwconfig wlan0 2>/dev/null | grep IEEE) echo $(date) >> ${LOG} if [ -z "$SW" ] # check if wifi is on then echo "Wifi is already OFF" >> ${LOG} else echo "Wifi is ON" >> ${LOG} if [ -z "$(iw dev wlan0 station dump | tr -d '\n')" ] # Anyone here? then if [ -z "$(iw dev wlan1 station dump | tr -d '\n')" ] # Anyone here? then echo "No-one is connected" >> ${LOG} case "$(cat /var/autowifi)" in # Someone connected before? 1) echo "No-one was connected. Turning wireless OFF" >> ${LOG} /sbin/wifi down 2>/dev/null cat /var/autowifi ;; *) echo "Someone was connected. Leaving wireless ON" >> ${LOG} echo 1 > /var/autowifi ;; esac else echo "Someone is connected to wlan1 (5GHz)" >> ${LOG} cat /var/autowifi fi else echo "Someone is connected wlan0 (2.4GHz)" >> ${LOG} cat /var/autowifi fi fiAquest fitxer s'ha de guardar a /sbin amb el nom autowifi (/sbin/autowifi).
Tot seguit l'hem de fer executable, també crearem el fitxer auxiliar /var/autowifi (que serveix per indicar si hi havia algú connectat la darrera vegada) i editarem el crontab per tal d'executar el codi autowifi cada cert temps (15 minuts en aquest cas):
root@Gargoyle:~# chmod +x /sbin/autowifi root@Gargoyle:~# touch /var/autowifi root@Gargoyle:~# vi /etc/crontabs/rootAfegim la línia següent al crontab:
*/15 * * * * /sbin/autowifiI ja ho tenim. La xarxa sense fils s'apagarà automàticament si ningú si ha connectat en la darrera mitja hora. Evidentment, podeu baixar l'interval a uns pocs minuts simplement modificant el valor indicat en el crontab.
Cap comentari:
Publica un comentari a l'entrada