• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

cronjob läuft nicht...!?

hi!

ich habe das problem, dass t-online meine internetverbindung nach 24 stunden unterbricht.

über KInternet findet dann keine wiedereinwahl statt, obwohl ich "dial on demand" aktiviert habe...!

nun will ich das ganze über einen cronjob regeln.
dazu hab ich die datei /etc/crontab als root folgendermassen editiert:

Code:
SHELL=/bin/sh
PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
MAILTO=root
#
# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly
#
-*/15 * * * *   root  test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons >/dev/null 2>&1
59 *  * * *     root  rm -f /var/spool/cron/lastrun/cron.hourly
14 4  * * *     root  rm -f /var/spool/cron/lastrun/cron.daily
29 4  * * 6     root  rm -f /var/spool/cron/lastrun/cron.weekly
44 4  1 * *     root  rm -f /var/spool/cron/lastrun/cron.monthly
50 22 * * *     root  /usr/bin/cinternet -i dsl0 --stop
55 22 * * *     root  /usr/local/bin/adsl_reconnect.sh

in der datei adsl_reconnect.sh steht folgendes
Code:
#!/bin/sh 
 result=$(/usr/bin/cinternet -i dsl0 --status | /usr/bin/grep disconnect) 
 if [ -n "$result" ] 
 then 
 /usr/bin/killall pptp >/dev/null 2>&1 
 /usr/bin/cinternet -i dsl0 --start #Start the interface. 
 echo `/bin/date` reconnect >> /var/log/adsl_reconnect.log 
 else #The interface is up - Just exit 
 exit 0 
 fi

allerdings krieg ich das ding nicht zum laufen!?

stört es, wenn nebenbei KInternet läuft?

was ist daran falsch, hab es so aus einem anderen post hier übernommen?

karibikjoe
 
OP
K

karibikjoe

Newbie
die datei /var/log/adsl_reconnect.log wird komischerweise nicht angelegt. die crontab hab ich als root angelegt/bearbeitet.

wie komm ich da einen schritt weiter, um den fehler zu identifizieren?

spielt es dann eine rolle, welcher benutzer aktiv ist, wenn der cronjob laufen soll? wenn der crontab vom root angelegt wurde müsste er doch in jedem fall laufen, oder?

hab in nem anderen post was von absoluten pfadangabe zu dem script gefuden, allerdings weiß ich nicht wie ich das machen soll?
 

rolle

Guru
wenn ich mit meinen bescheidenen faehigkeiten dein script richtig lese, dann passiert darin folgendes:
abfrage des verbindungsstatus', wenn verbunden alle pptp-verbindungen killen, verbindung herstellen, ergebnis in logfile schreiben.
in der crontab hast du eine zeile ueber dem script eine zeile, die die dsl-verbindung unterbricht. (ich vermute mal, der befehl funktioniert so bei dir auf der kommandozeile.) also hast du erst einmal doppelt gemoppelt.
mein vorschlag, noch ausbaufaehig:
Code:
#!/bin/bash
cinternet -i dsl0 -O
sleep 60
cinternet -i dsl0 -A
(erklaerung: dsl-verbindung beenden, 1 minute warten, verbindung aufbauen)das speicherst du ab, machst es per chmod +x ausfuehrbar und verankerst es in /etc/crontab wie gehabt. erweitern koenntest du das ganze noch um die umleitung der ausgabe in ein logfile oder nach /dev/null. aber versuche es erst mal von klein nach gross mit einem einfachen script.
die sache mit den absoluten dateipfaden hast du in deiner crontab und deinem script ja schon drin. ein absoluter pfad ist einfach einer, der von / aus den pfad definiert, nicht von dem verzeichnis aus, in dem du dich gerade befindest.

horrido, roland
 
OP
K

karibikjoe

Newbie
danke für dein kleines skript. das sieht doch schon viel handlicher aus!:)

hab jetzt mal versucht, das shell-skript direkt über die konsole (als admin) zu starten. bekam dann ne meldung, dass ich keien zugriffsberechtigung habe.

hab mit chmod 777 "datei" die berechtigung hergestellt und
konnte die datei dann ausführen. das skript funktionierte wunderbar!;-) und ab da dann auch durch den aufruf über crontab.

ist denn die berchtigung auf die datei adsl_reconnect.sh nach einem reboot wieder weg, oder "merkt" die sich Suse 9.1?

karibikjoe
 
Oben