DD-WRT: Wie legt man Cronjobs richtig an?

Bootbachelor

Cadet 3rd Year
Registriert
Dez. 2024
Beiträge
52
Hallo!

Ich habe erfolgreich an meiner Fritzbox einen alten Router mit DD-WRT angehängt, um das Internet zu erweitern. Ich bin zurecht sehr stolz. :D

Jetzt habe ich aber Fragen, und zwar zu Cronjobs, die ein WLAN aus- und später wieder einschalten sollen:

1. Wie legt man die Cronjobs richtig an bzw. warum funktionieren diese beiden hier nicht?

Code:
30 01 * * * root iwconfig wlan0 txpower off
30 08 * * * root iwconfig wlan0 txpower on

Sie stehen unter Administration - Diagnose - "Hochfahren", weil ich gelesen habe, daß sie nur dort einen Reboot überstehen. Sie führen aber nicht dazu, daß das WLAN geschaltet wird, weder ein noch aus.

Der Router ist ein TP-Link 1043. Meine Version ist DD-WRT v3.0-r62104 std, also die allerneueste. In v3 hat sich offenbar die Bezeichnung der Schnittstellen geändert, es heißt wirklich "wlan0" und nicht mehr "ath0" oder ähnliches. So steht es zumindest im Status des Routers.

Irgend etwas anderes muß falsch sein. Aber was?

Der Ort, wo die Cronjobs stehen, kann so falsch nicht sein. Nach dem Einrichten habe ich den Router rebootet, weil ich gelesen habe, daß das nötig ist, und sie waren noch da. Aber eben ohne jede Auswirkung.

2. Stimmt das mit der Reboot-Notwendigkeit, oder geht es auch irgendwie anders?

3. Was soll unter unter Administration - Management das Feld "Zusätzliche Cron Jobs"? Ist das gleichwertig zu der Diagnose-Seite?

In der offiziellen Dokumentation finde ich zu diesen Fragen fast nichts, und wenn, dann Veraltetes (für DD-WRT 2.4).

Vielen Dank für hilfreiche Hinweise!
 
Sicher dass der Befehl richtig ist und auch ohne cron-job funktioniert ?
Solltest dich per SSH auf den DD-WRT einloggen können und testen ob dein o.g. Befehl funktioniert.
 
Ist für Cron PATH konfiguriert und ist "iwconfig" auch im Pfad zu finden? Im Zweifel immer mit absoluten Pfaden arbeiten.
 
  • Gefällt mir
Reaktionen: Alter_Falter und GaborDenes
meph!sto schrieb:
Sicher dass der Befehl richtig ist und auch ohne cron-job funktioniert ?
Solltest dich per SSH auf den DD-WRT einloggen können und testen ob dein o.g. Befehl funktioniert.

Ohne cron-job? Wie probiere ich das aus? Geht das auch über diese commandline (unter Administration - Diagnose)?

KillerCow schrieb:
Ist für Cron PATH konfiguriert und ist "iwconfig" auch im Pfad zu finden? Im Zweifel immer mit absoluten Pfaden arbeiten.

Wo kann ich das sehen? Bzw. wo finde ich den absoluten Pfad?
 
Und dann soll ich per trial and error ausprobieren, welche Befehle gehen und welche nicht?

Ich hatte gehofft, jemand weiß, wie Cronjobs unter DD-WRT v3 aussehen müssen. Das Faß mit SSH und Putty wollte ich eigentlich nicht aufmachen. Da warten garantiert die nächsten Klippen.

Mir wäre auch schon mit der Beantwortung meiner Fragen 2 und 3 geholfen:

2. Stimmt das mit der Reboot-Notwendigkeit, oder geht es auch irgendwie anders?

3. Was soll unter unter Administration - Management das Feld "Zusätzliche Cron Jobs"? Ist das gleichwertig zu der Diagnose-Seite?

Danke.
 
https://wiki.dd-wrt.com/wiki/index.php/CRON

zu 2.:
Es gibt 3 Orte wo die Cron-Jobs abgelegt werden und wenn die unter /tmp/ abgespeichert werden, überleben die keinen Reboot.

zu 3. kann ich nix beitragen

Ein Cron-Job besteht ja aus dem Zeitpunkt und dem Befehl.
Wenn der Zeitpunkt korrekt ist, der Befehl aber fehlerhaft, dann wirst du das nie merken.

Daher: erst den Befehl testen ob der funktioniert und danach den Befehl in einen cron-job kippen.

Edit:
der Befehl das WLAN an/aus zuschalten lt. : https://wiki.dd-wrt.com/wiki/index.php/Wl_command#Toggle_radio_on.2Foff.2C_restart.2C_etc

Auf einem DD-WRT läuft eine ganz abgespeckte, angepasste Unix Variante, da wird es nicht zwangsläufig alle bekannten Unix-Befehle geben,

Toggle radio on/off, restart, etc​

  • ~ # wl up
reinitialize adapter and mark as up
  • ~ # wl down
reset adapter and mark as down
  • ~ # wl out
mark adapter down but do not reset hardware.
  • ~ # wl radio
toggle radio on/off

~ # wl radio
radio is on (WL_RADIO_SW_DISABLE 0 WL_RADIO_HW_DISABLE 0)
~ # wl radio off
~ # wl radio
radio is off (WL_RADIO_SW_DISABLE 1 WL_RADIO_HW_DISABLE 0)
~ # wl radio on
  • ~ # wl restart
restart the driver. (Driver must already be down)
 
Bootbachelor schrieb:
Ohne cron-job? Wie probiere ich das aus?
Ein CRON-Job ist nichts anderes, als ein manuell ausgeführter Befehl, nur das er halt zu einem bestimmten Zeitpunkt von einem bestimmten Benutzer augeführt wird. In deinem Fall vom Benutzer "root".

meph!sto schrieb:
Dann einfach per Putty (o.ä.) verbinden und dann o.g. Befehl absetzen
Das klappt so nicht. Das "root" muss weg und nur weil es in einer interaktiven Sitzung klappt, muss es noch lange nicht mit CRON klappen, Thema "Environment".

@Bootbachelor
Mach ne SSH-Sitzung auf und gib mal
Bash:
which iwconfig
ein. Da bekommst du den absoluten Pfad ausgegeben, sofern das Kommando gefunden wird. Den trägst du dann in deinen CRON-Job ein und nicht nur das "iwconfig".

Zusätzlich den Befehl, mit absolutem Pfad, ohne das "root" vorne, in der SSH-Sitzung eingeben und schauen, ob es klappt. Falls du nicht als root angemeldet bist, vorher noch mit "su -" zu root werden oder vor den Befehl "sudo " schreiben (ich weiß nicht, ob dd-wrt sudo im Bauch hat).
 
Ich habe mich auch über das "iwconfig" gewundert und würde mal annehmen das es nicht der richtige Befehl ist.
"wl" sollte auch nicht funktionieren, da sein Router keinen broadcom chip hat.
Probiert mal folgenden Befehl im Cron:

Code:
root wl_atheros radio off
 
Blöde Frage: ist dd-wrt überhaupt noch aktuell? Oder nutzt man heutzutage nicht eher Open wrt?
Hab auf meinem 1043 sowie meinem Archer a5 schon seit Ewigkeiten immer das neueste OpenWRT drauf, funktioniert Klasse.
 
Also, was plötzlich geklappt hat, war ein ganz anderer Befehl: "ifconfig wlan0 down" und "ifconfig wlan0 up".
Damit konnte ich direkt WLAN aus- und wieder einschalten!
Und zwar ohne SSH/Putty/etc., sondern direkt als Kommando über das Eingabefeld bei Administration - Diagnose - Kommando.

meph!sto schrieb:
der Befehl das WLAN an/aus zuschalten

Laut deinem Link sollte statt "down" auch "~ # wl out" funktionieren. Wenn ich nur wüßte, was die Tilde und die Raute da sollen... Funktioniert aber nicht! Genausowenig wie "radio off". Vermutlich ist da auch die Dokumentation älter als die Software.

Für heute abend steht mal folgendes im Start:
mm hh * * * ifconfig wlan0 down
mm hh * * * ifconfig wlan0 up

in der Hoffnung, daß diese Befehle auch im Cronjob funktionieren. Also unintuitiver gehts nicht. Und wenn dann nicht mal die Dokumentation stimmt. :grr:

drake23 schrieb:
Blöde Frage: ist dd-wrt überhaupt noch aktuell?

Das hast jetzt du gesagt. Wenn bis letzte Woche Freitag ständig neue Versionen hergestellt werden, wird es wohl aktuell sein. Bei OpenWRT war ich ursprünglich, da hab ich trotz wochenlangem Rumprobieren überhaupt nichts zustandegekriegt. Jeden Mist mußte man als Paket nachinstallieren. Bei DD-WRT hat die Einrichtung sofort geklappt, weil alles Nötige mit an Bord ist. Deshalb bleibe ich dabei.
 
  • Gefällt mir
Reaktionen: drake23
Dass dein ursprünglicher cronjob nicht klappte, lag also am Befehl selbst.
War/ist der Befehl bzw das Paket "iwconfig" überhaupt installiert?

Wenn es aber nun klappt, ist's doch super.
 
meph!sto schrieb:
Wenn es aber nun klappt, ist's doch super.

Tja, hat es aber nicht. :(

Dann habe ich zusätzlich den Benutzernamen "root" genommen und das hier als Versuch unter "Zusätzliche Cronjobs" eingestellt:
Code:
mm hh * * * root ifconfig wlan0 down

Siehe da: das WLAN ging zu der eingestellten Zeit aus! Sogar ohne Reboot!

Nächster Versuch war dann, dasselbe unter Diagnose als Startskript einzustellen:

Code:
mm hh * * * root ifconfig wlan0 down
mm hh * * * root ifconfig wlan0 up

Das klappt aber wieder nicht! Nicht einmal nach einem Reboot. Es ist wie verhext.

Ich sehe ja noch ein, daß der Benutzername mitgenannt werden muß, weil ja, wenn ich aus dem Router ausgeloggt bin, kein Benutzerkontext da ist. Aber dann sollte es doch nicht nur unter "Zusätzliche Cronjobs" so klappen, sondern auch unter Diagnose.
 
Habe kein DD-WRT Gerät hier liegen,
aber wenn es unter "zusätzliche Cronjobs" funktioniert (kann man da mehr 1 Cronjob anlegen ?) und unter "Diagnose" nicht, würde ich "Diagnose" einfach ignorieren und meine Cronjobs unter "zusätzliche Cronjobs" abspeichern.

1756374337158.png


Da kannst du ja offenbar mehrere jobs anlegen.
 
Workaround
Da kannst du doch einstellen wann WLAN an/aus sein soll:

1756375163189.png
 
Ja. Aber nicht zu "krummen" Uhrzeiten, und nicht für verschiedene Wochentage unterschiedlich.
Ergänzung ()

Und außerdem will ich diese verdammten Cronjobs zum Laufen kriegen. :hammer_alt:
Ergänzung ()

Dein Screenshot ist interessant. Schon unter DD-WRT 2.4 heißen die WLAN-Interfaces offensichtlich "wlan0" oder "wlan1". Dann frage ich mich, wie schnarchalt Anleitungen sind, wo noch "ath0" oder so Zeugs steht.
 
Zuletzt bearbeitet:
Naja,
die interface sind auch vom Gerät abhängig (soweit ich weiß).
Wenn dein Gerät einen atheros Chipsatz hat, dann wird die Schnittestelle "ath0" heißen.
Ob in der Anleitung bzw. Screenshot nun eth0, wlan0, ath0 oder guenther1 steht, bedeutet erstmal nix.

Eine andere Überlegung wäre: deine Cronjobs auf einem USB Stick abspeichern.
Dann müssten sie den Reboot überleben.
 
wlan 0 funktioniert aber, obwohl ich einen Atheros-Chipsatz habe.
Wenn es mit Administration - Diagnose - "Hochfahren" einen extra Bereich in der GUI gibt, der den Restart überleben soll, dann will ich natürlich den nutzen.
 
Ich verstehe den Eintrag unter "hochfahren" so, dass der dortige Befehl nach einem Reboot ausgeführt wird.
Da bringt es nix einen Cronjob-konformen Eintrag einzutragen.
Ein
Code:
mm hh * * * root ifconfig wlan0 down
sollte da nicht funktionieren.

Ich denke aber so langsam, dass ich auch mit meinem Latein am Ende bin.

1756376508763.png



Wo hast du denn deine Version r62104 her ? (Edit: habe es gefunden - aus dem Forum)

1756376733441.png



Weitere Workaround Idee:
Unter "Hochfahren" legst du ein Script an, dass dir deine cronjobs anlegt.
Code:
echo 'mm hh * * * root ifconfig wlan0 down' >> /tmp/crontab
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Bootbachelor
Zurück
Oben