[Frage] Frage zu crond in Verbindung mit /etc/init.d/rc.net

sbe-michael

Neuer User
Mitglied seit
9 Okt 2010
Beiträge
23
Punkte für Reaktionen
0
Punkte
1
Hallo zusammen,

ich möchte auf einer 7170 per Cronjob mit /etc/init.d/rc.net das WLan ein-, bzw. ausschalten. Per Telnet funktionieren die Befehle /etc/init.d/rc.net wlanstart und /etc/init.d/rc.net wlanstop einwandfrei. Trage ich die Befehle so im crontab ein, wird zwar der cronjob ausgeführt, aber der Befehl zeigt keine Wirkung. Hier und hier habe ich dazu was gefunden, leider gab es damals keine Lösung dazu. Kann mir jemand erklären, warum /etc/init.d/rc.net nicht über cron ausgeführt werden kann?

Hier mal die beiden Varianten, die ich in crontab nacheinander ausprobiert habe:
Code:
* * * * * if ping -c 2 10.0.0.91; then /etc/init.d/rc.net wlanstart; else /etc/init.d/rc.net wlanstop; fi
... oder etwas einfacher:
Code:
* * * * * /etc/init.d/rc.net wlanstop; fi

Im Syslog erscheint dann sowas:
Code:
Aug 29 10:25:01 fritz cron.info crond[399]: crond: USER root pid 822 cmd if ping -c 2 10.0.0.91; then /etc/init.d/rc.net wlanstart; else /etc/init.d/rc.net wlanstop; fi
Aug 29 10:26:01 fritz cron.info crond[399]: crond: USER root pid 827 cmd if ping -c 2 10.0.0.91; then /etc/init.d/rc.net wlanstart; else /etc/init.d/rc.net wlanstop; fi
Aug 29 10:27:01 fritz cron.info crond[399]: crond: USER root pid 832 cmd if ping -c 2 10.0.0.91; then /etc/init.d/rc.net wlanstart; else /etc/init.d/rc.net wlanstop; fi


Viele Grüße
Michael
 
Ruf ein Skript auf!

Moinsen

Erstell doch mal ein Skript, sagen wir mal: wlan_cronjob.sh
Dann tust du diese Statements rein:
wlan_crojob.sh
Code:
#! /bin/sh
ping -c1 192.168.178.2
if [ 1 ]
then
echo "ATD#96*0*" | nc 127.0.0.1 1011
#/etc/init.d/rc.net wlanstop
return 0
else
echo "ATD#96*1*" | nc 127.0.0.1 1011
#/etc/init.d/rc.net wlanstart
return 1
fi
#END
...bei mir funktioniert rc.net so nicht, deswegen lass ich die Fritz!Box sich selber intern anrufen. ;)

crontab
Code:
* * * * * sh wlan_cronjob.sh
...Voilà

Erklärung: Jedes Kommando gibt einen Kode zurück, obs erfolgreich war oder nicht.
Direkt unter dem Kommando (nächste Zeile) muss dann das if kommen.
Das überprüft das if [ 1 ] (erfolgreich) if [ 0 ] (nicht erfolgreich)
Ganz simpel, wenns mans denn weiß. ;)
 
Zuletzt bearbeitet:
Oder wie bei mir mit ctlmgr:
Code:
#!/bin/sh
    wlanstat=$(ctlmgr_ctl r wlan settings/ap_enabled)
    if test "$wlanstat" -eq "1"
    then
    	echo "Schalte ab"
    	ctlmgr_ctl w wlan settings/ap_enabled 0
    else
    	echo "Schalte ein"
    	ctlmgr_ctl w wlan settings/ap_enabled 1	
    fi
    exit 0
Die Echos waren nur zum Testen, kannste auskommentieren, oder löschen, dann wird des file noch kürzer... :wink:
 
Moin Jungs,

danke für die schnelle Hilfe und die vielen Antworten!

Das funktioniert bei mir auf der Box perfekt:
Code:
* * * * * if ping -c 2 10.0.0.91; then ctlmgr_ctl w wlan settings/ap_enabled 1; else ctlmgr_ctl w wlan settings/ap_enabled 0; fi

In ein Script eingebaut funktioniert das sicher auch sehr gut... habe ich jetzt aber nicht probiert.

Viele Grüße
Michael
 

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
246,760
Beiträge
2,256,968
Mitglieder
374,788
Neuestes Mitglied
LaceyJerome
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.