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

Cron-Job will ums verrecken nicht laufen

Picco

Newbie
Hallo zusammen,

also ich dreh hier gerade mal wieder durch.

Ich habe ein Script geschrieben, in dem weitere Scripte aufgerufen werden (s.u.).

Dieses Script soll einfach nur über den Cron gestartet werden.(s. auch u.)

Ich will damit später mal testen, ob ein VPN-Tunnel noch läuft ...

..schaut bitte nicht so sehr auf die Logik im Script, das übe ich noch :lol:

Hat einer von Euch vielleicht eine Idee warum dieses Script nicht laufen will ?

Ich bekommen als Root weder Mails und im Tail steht auch nichts.

Jede Anregung würde mich schon helfen.

Danke !!!!!!!!!


Code:
#!/bin/sh
#Ziel-IP
ZIEL=192.168.210.113
#Laufvar.
INT=1
#Wiederholung
AB=0
#Tunnel
ER=1
#Zeit
set `date`
case $1 in
	Mon) SERIAL=_$6-$2$3-Montag-$4;;
	Tue) SERIAL=_$6-$2$3-Dienstag-$4;;
	Wed) SERIAL=_$6-$2$3-Mittwoch-$4;;
	Thu) SERIAL=_$6-$2$3-Donnerstag-$4;;
	Fri) SERIAL=_$6-$2$3-Freitag-$4;;
	Sat) SERIAL=_$6-$2$3-Samstag-$4;;
	Sun) SERIAL=_$6-$2$3-Sonntag-$4;;
	*) SERIAL=ZEIT_$6-$2$3-kein_Tag-$4;;
esac

#erster Ping auf die Ziel-IP
ping -c 2 -w 2 $ZIEL || ER=0

#Falls Ping nicht durchgeht
if [ $ER = 0 ]
	then
		echo -e "$SERIAL - 1. Veruch den Zielhost: $ZIEL zu erreichen ---> Fehler !" >>Tunnel.log
		AB=0
while [ $AB -le 9 ]
	do
		# Hier soll der Tunnel gesoppt werden
		#-----------------------------------
		echo -e "$SERIAL - $INT. Versuch ---> Tunnel wurde gestoppt." >>Tunnel.log
		sleep 10
		# Hier wird der Tunnel gestartet
		#-----------------------------------
		echo -e "$SERIAL - $INT. Versuch ---> Tunnel wurde zum $INT. Mal neu gestartet." >>Tunnel.log
		sleep 3
		ping -c 2 -w 2 $ZIEL && AB=9 && ER=2;
		INT=$((INT+1))
		AB=$((AB+1))
		echo -e "$SERIAL - $INT. Versuch." >>Tunnel.log
		#
		if [ $AB = 10 ]
			then
			ping -c 2 -w 2 $ZIEL || ER=3
		fi
	done
fi
#Log-Meldung
if [ $ER = 2 ]
	then
		echo -e "_____:-)_____$SERIAL - Der Zielhost $ZIEL wurde beim $INT. Mal erreicht." >>Tunnel.log
fi
#Log-Meldung
if [ $ER = 3 ]
	then
		echo -e "_____!!!_____$SERIAL - Der Tunnel konnte nicht wieder aufgebaut werden." >>Tunnel.log
fi
#Zum Testen, spaeter auskommentieren
if [ $ER = 1 ]
	then
		echo -e "_____:-)_____$SERIAL - ALLES IN BUTTER !!!." >>Tunnel.log
fi

Die Pings werder später nach /dev/null umgeleitet.

Und jetzt meine crontab
Code:
*/3 * * * * absoluter Pfad zum Scritp

Wie gesagt ich bin zur Zeit erstmal für jeden Tipp dankbar. Ich habe auch schon viel im Netz dazu gelesen, aber das hat mich auch nicht weitergebracht. Was mich so stuzig mach ist, dass ich gar keine Rückmeldung über irgentwas bekommen. (Nebenbei auf zwei verschiedenen SuSE 9.2 - Systemen)


Schönen Dank nochmal für Eure Mühe

Gruß

Der Picco


Ach bevor ich es vergesse ... wenn ich das Script direkt startet läuft es wunderbar.
 

gameboy

Hacker
Hallo Picco,

zunächst einmal würde ich alle Programmaufrufe innerhalb Deines Scripts auf absolute Pfade umstellen, also z.B. "ping" ersetzen durch "/bin/ping" (entsprechend für sleep, etc.). Hintergrund ist, daß beim manuellen Start Deines Skripts einige Umgebungsvariablen gesetzt sind, die dafür sorgen, daß die Programme gefunden werden. Beim Start des Skripts über den crond steht ein Teil dieser Variablen dagegen nicht zur Verfügung.

Viele Grüße,
gameboy.
 
Hi Picco,

ein paar Tips:

Sehen was passiert im Skript: "-x" ergänzen.

#!/bin/sh -x

Schauen ob das Linux cron ausführt: ( mit $G ans Ende gehen )
less /var/log/messages

Skript auf Syntaxfehler testen: (deins sieht aber OK aus )
bash -n "skript"

Viele Grüße,

Haveaniceday
 
OP
P

Picco

Newbie
Hi,

erstmal danke für Eure Hilfe.

Ich habe Eure Tipps ausprobiert ... ---> kein Erfolg :(

Ich habe auch den oberen Teil (set `date`) einmal komplett auskommentiert und dafür Serial mit SERIAL=murx deklariert..

Ins Tail schreibt er mit rein gar nichts :evil:

Jetzt habe ich mal ein anderes Script über den Cron aufgerufen:
Code:
echo "Alles Murx" >>Cron_murx.log

Das hat er jetzt einmal gemacht. (hier hat er auch schön brav ins Tail was geschrieben). Danach habe ich versucht in diesem Script mein Tunnelscript zu starten. Das ging wieder nicht. Daraufhin habe ich die Zeile zum Starten meine Tunnelscriptes wieder herausgenommen.

Jetzt startet er mein Testscript auch nicht mehr. :x

:wtf: So langsam geht mir das an meine Substanz.

Wenn wenigstenz was im Tail stehen würde. Vielleicht bin ich auch zu doof den Cron zu konfigurieren. Ich meine, ich bin immerhin noch viel am ausprobieren. :roll:

Fällt Euch vielleicht noch was ein ?


Danke für Euer Hilfe !!!

Gruß

Picco
 
OP
P

Picco

Newbie
Hi,

danke für die Antwort !

Also mein Script ausführen kann ich.
chmod 777 scriptname

Das ist bestimmt irgentsoeinem dumme Kleinigkeit.


Gruß

Picco
 
Welche crontab benutzt du denn?
Die des Systems: /etc/crontab?
Da sollte der Eintrag so aussehen:
Code:
*/3 * * * *  user /pfad/zum/script
Oder eine der User-crontabs?
Da brauchst du die User-Angabe nicht.
 
OP
P

Picco

Newbie
Hi,

also ich nehme crontab -e

Dann eintragen und fertig.

Hat auch geklappt (beim Testscrip). Die Userangabe habe ich nur testhalber mal reingesetzt, weil ich nicht weiter wußte.

Gruß

Picco
 
OP
P

Picco

Newbie
Hi,

jau ... ich erstelle den Cron-Job als Root.

Ich habe auch schon die Einträge in /etc/crontab gemacht.

Hat auch nicht funktioniert.


Gruß

Picco
 

bolder

Member
Gibt es eine
/var/spool/cron/deny
oder
/var/spool/cron/allow
durch die du vielleicht ausgesperrt bist?

Gruß
Olaf
 
haveaniceday schrieb:
Schauen ob das Linux cron ausführt: ( mit $G ans Ende gehen )
less /var/log/messages

Schau doch mal im Log. Vielleicht ist cron gar nicht aktiv oder meldet schön brav einen Fehler.
"crontab -e" ist sehr gut. Nutzt du schon. Ädnerungen direkt in dem Dateien werden unter umständen erst nach einem neustart eines Cronjobs erkannt.

Läuft denn überhaupt ein "simpler" cronjob, so nur "echo hallo".
Vielleicht liegt es ja gar nicht an deinem Skript.

Haveaniceday
 
OP
P

Picco

Newbie
Hallo,

danke für die Tipps und ... sorry, wenn ich erst so spät wieder antworten kann.


@bolder

Also in meiner /var/spool/cron/deny steht guest und gast drin.

Eine Allow gibt es gar nicht. Kann ich die einfach erzeugen und z.B. root reinschreiben ?

@haveaniceday

Also ich habe schon mal genau so einen Cronjob erstellt. (echo „Hallo“).
Den hat er ausgeführt.

Dann habe ich einen Cronjob erstellt in dem ein Script auf gerufen wurde, in dem wiederrum echo „hallo“ stand.

Das hat er einmal ausgeführt und dann nicht mehr.

Ich habe auch den Cron mehrmals neu gestartet. Dummerweise steht im
tail nichts. Dann hätte ich ja wenigstenz einen Anhaltspunkt. :(

In den Manpages finde ich auch nicht so recht einen Hinweis woran das liegen könnte.


Danke für Eure Hilfe


Gruß

Picco
 
Oben