[Tutorial] DD-WRT WLAN per Cron zeitgesteuert ein- und ausschalten
Hallo zusammen,
ich war lange relativ unzufrieden mit den Möglichkeiten die DD-WRT mitbringt um das WLAN zeitgesteuert ein- und auszuschalten.
Man kann über die GUI zwar Zeiten definieren, allerdings gelten diese für jeden Tag der Woche. Es gibt keine Möglichkeit das WLAN z.B. am Wochenende anders ein- und auszuschalten.
Den Menüpunkt dafür findet man unter „Wireless\WL0-Advanced“:
In diesem Fall wäre das WLAN von 18 Uhr bis 1 Uhr an und im Zeitram dazwischen aus.
Da ich das WLAN am Wochenende aber zu anderen Zeiten benötige habe ich mich lange nach einer Alternative umgesehen. Leider hatten die gefunden Befehle im DD-WRT Forum keinen Effekt oder waren für Geräte mit dem Atheros Chipsatz. Da die Befehle für Broadcom Devices anders lauten kann man diese nicht übertragen.
Genug geredet, hier folgt die Lösung:
Man nutzt die GUI um unter „Administration\Management“ die Befehle zum Steuern unter Cron abzulegen. Das ganze sieht dann folgendermaßen aus:
Das ganze sollte relativ selbsterklärend sein, hier noch einmal der gesamte Block zum kopieren:
# minute (0-59),
# | hour (0-23),
# | | day of the month (1-31),
# | | | month of the year (1-12),
# | | | | day of the week (0-6 with 0=Sunday).
# | | | | | commands
30 06 * * 1-5 root stopservice nas && wl -i eth1 radio on && startservice nas #Mo-Fr morgens WLAN on
15 08 * * 1-4 root stopservice nas && wl -i eth1 radio off #Mo-Do morgensWLAN off
30 17 * * 1-4 root stopservice nas && wl -i eth1 radio on && startservice nas #Mo-Do abends WLAN on
30 01 * * 0-4 root stopservice nas && wl -i eth1 radio off #So-Do abends WLAN off
30 08 * * 6,0 root stopservice nas && wl -i eth1 radio on && startservice nas #Sa-So morgens WLAN on
00 03 * * 5,6 root stopservice nas && wl -i eth1 radio off #Fr-Sa abends WLAN off
00 05 * * 0-6 root stopservice nas && wl -i eth2 radio off #5Ghz WLAN off
Jetzt einfach die Zeiten nach euren Wünschen anpassen 🙂
Um das WLAN auch bequem per SSH auf der Console steuern zu können kann man sich auch 4 kleine Skripte anlegen und z.B. unter „/jffs/bin“ speichern. Wichtig ist, dass das Verzeichnis aufgelistet ist wenn man
# echo $PATH
eingibt. Die Ausgabe sieht ungefährt so aus:
/bin:/usr/bin:/sbin:/usr/sbin:/jffs/sbin:/jffs/bin:/jffs/usr/sbin:/jffs/usr/bin:/mmc/sbin:/mmc/bin:/mmc/usr/sbin:/mmc/usr/bin:/opt/sbin:/opt/bin:/opt/usr/sbin:/opt/usr/bin
Ansonsten kann man das Script nicht über den Namen aufrufen sondern muss den kompletten Pfad ausschreiben.
Sollte der Pfad nicht aufgeführt sein, kann man ihn auch manuell hinzufügen:
# export PATH=$PATH:/pfad/zu/scriptordner
Falls das nötig war, dann empfehle ich die Zeile in der GUI unter „Administration\Commands“ in das Feld einzufügen und auf „Save Startup“ zu klicken. Dann wird der Pfad automatisch nach jedem Reboot hinzugefügt.
2,4 Ghz WLAN Einschalten:
1 2 3 4 | #!/bin/sh stopservice nas wl -i eth1 radio on startservice nas |
2,4 Ghz WLAN Ausschalten:
1 2 3 | #!/bin/sh stopservice nas wl -i eth1 radio off |
5 Ghz WLAN Einschalten:
1 2 3 4 | #!/bin/sh stopservice nas wl -i eth2 radio on startservice nas |
5 Ghz WLAN Ausschalten:
1 2 3 | #!/bin/sh stopservice nas wl -i eth2 radio off |
Speichert man nun das Skript zum Einschalten des 2,4 Ghz WLANs beispielsweise unter „/jffs/bin/wlanon“ und macht es mit
# chmod +x /jffs/bin/wlanon
ausführbar, dann kann man es in der Console ausführen indem man „wlanon“ eintippt. Dadurch kann man auch die Cronjobs in der GUI übersichtlicher gestalten.
Statt
30 06 * * 1-5 root stopservice nas && wl -i eth1 radio on && startservice nas
kann man nun auch
30 06 * * 1-5 root /jffs/bin/wlanon
eintragen. Aber Achtung, bei Cronjobs immer den ganzen Pfad angeben und den User, der den Befehl ausführen soll, nicht vergessen!
Und nun viel Spaß beim ausprobieren!
Gruß iro
[Last Edit: 24.04.2014]
wenn man wlan ausschalten will, falls keine clients mehr verbunden sind, dann gibt es folgende möglichkeit:
*/15 * * * * root if [ -z `/usr/sbin/wl -i eth1 assoclist` ];then stopservice nas && wl -i eth1 radio off;else echo „noch connected“;fi
Danke für den Tipp 🙂