Shell Script - Problem beim automatisierten von kcron

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
neogrande
Beiträge: 45
Registriert: 05.03.2005 11:11:43

Shell Script - Problem beim automatisierten von kcron

Beitrag von neogrande » 08.08.2006 00:05:09

Hallo,

ich habe mir mein erstes größeres (also mehr als 4 Zeilen ^^) Script geschrieben, welches über die HTML-Statusseite meines Routers dessen IP raus bekommt und mich ggf. über einen DSL-Reconnect informieren soll.
Dieses Script habe ich getestet und es läuft. yuhuu.
Dann hab ich es in die Tabelle von kcron eingetragen.
Dort direkt nochmal getesten - geht auch!

Aber automatisiert bekomm ich 2 Probleme:
1. scheinen die Werte nur Leer-Strings zu bekommen, statt der IP. Jedenfalls steht dann in der Datei, in der die IP gelagert werden soll, nur noch ein Leerstring da. In dem Fall beschwert sich cron per mail darüber, dass = kein unärer Operator ist, wenn ich die "" um die Variablen weglasse.

2. kann das automatisierte Script wohl nicht mehr auf mein Display für kdialog zugreifen.
Laut mail läuft das Ding aber als user und HOME ist auch richtig gesetzt.

Wo speichert eigentlich kcron die jobs ab? in /etc/crontab ist nix zu finden (script startet aller 5 Minuten)

Grüße

neogrande

Script: http://www.inf.tu-dresden.de/~s0100685/test_dsl.sh

Leo
Beiträge: 24
Registriert: 10.10.2005 19:40:55

Beitrag von Leo » 08.08.2006 01:44:26

Hi,

Ich kann dir zwar bei deinem konkreten Problem nicht helfen, aber vielleicht nützt dir folgendes Skript: http://nopaste.debianforum.de/3859.

Anstatt es per cron aufzurufen läuft es quasi als Daemon immer im Hintergrund und prüft alle 20 Sekunden ob sich die IP geändert hat, wenn ja, versucht es google anzupingen und holt die neue IP sobald der Ping geklappt hat.

Für deine Zwecke kannst du die ganzen Logsachen rausnehmen, dort wo die Geschichte mit centericq steht kannst du dein Dialogfenster einbauen (oder, da in deinem Skript was von licq steht, du änderst das Ganze so das es mit licq funktioniert, falls das der einzige Grund ist aus dem du das Skript brauchst).

MfG,
Leo

Benutzeravatar
SubOptimal
Beiträge: 1709
Registriert: 10.01.2005 23:25:46
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: bei Frankfurt

Beitrag von SubOptimal » 08.08.2006 01:57:06

Hi neogrande,

da das Skript als cron job ausgeführt wird hat es kein Environment. Du musst also für wget und grep den kompletten Pfad angeben und $HOME ist dann nicht Dein $HOME sondern das von dem User unter dessen ID der Job von cron gestartet wird. Hier am besten auch den kompletten Pfad angeben.
Die Fehlermeldung kommt daher, weil in PRUFE_IP und AKT_IP eben nichts gespeichert ist. Dann wird aus

Code: Alles auswählen

if [ "$PRUEF_IP" != "$AKT_IP" ]

-> if [ "" != "" ]

und wenn Du die Anführungszeichen auch noch weg lässt

-> if [  !=  ]
SubOptimal

Benutzeravatar
neogrande
Beiträge: 45
Registriert: 05.03.2005 11:11:43

Beitrag von neogrande » 08.08.2006 09:00:11

Daran habe ich auch gedacht.
Allerdings steht in der Beschwerde-Mail von cron korrekterweise:

X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/xxx>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=xxx>

Und das Home-Verzeichnis ist das korrekte...
Also sollte er schon $HOME und die ganzen Pfade kennen.
Mal davon abgesehen, scheinen die Variablen auch leer zu sein wenn ich die ganzen Pfadnamen korrekt ersetze...

und kdialog kennt er ja auch (beschwert sich ja über den nicht vorhandenen X-Server)

@Leo:
Danke für das Script, aber man hat ja dann schon den Ergeiz, dass das Eigene auch funktioniert ;-)
Hab aber auch schon an was daemon-artiges gedacht, wenn das mit cron so kompliziert ist.

roli
Beiträge: 3174
Registriert: 10.09.2003 17:39:58

Beitrag von roli » 08.08.2006 09:07:08

Hi,

wenn es die Umgebungsvariablen nicht sind, dann solltest du wirklich mal das Script auf nopaste stellen, sonst wird's helfen schwer.
Roland


"Aber wenn du schon so unwissend bist, davon noch nicht gehört zu haben,
so will ich es doch als gut ansehen, daß du lieber einmal töricht fragst,
als weiterhin nichts von etwas zu wissen, das man doch wissen sollte."
aus "Die Edda des Snorri Sturluson", "Gylfis Täuschung"

Benutzeravatar
neogrande
Beiträge: 45
Registriert: 05.03.2005 11:11:43

Beitrag von neogrande » 08.08.2006 09:13:59

hm, ich hatte oben schon einen externen Link angegeben, aber schön formatiert ist natürlich besser:
http://nopaste.debianforum.de/3860

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 08.08.2006 09:19:47

Wie sieht denn dein crontab-Eintrag aus?

Auf welchem System startest du dein Script bzw. soll es laufen?
Oh, yeah!

Benutzeravatar
neogrande
Beiträge: 45
Registriert: 05.03.2005 11:11:43

Beitrag von neogrande » 08.08.2006 10:07:06

Wie ich im ersten Post erwähnte, gibts keinen crontab-Eintrag, jedenfalls nicht in /etc/crontab.

Ich nutze KCron von KDE 3.5.3 unter Debian etch.
Kernel ist ein eigenkompilierter 2.6.16.11

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 08.08.2006 10:51:50

Dann habe ich das ganze falsch verstanden. Ich dachte, du wolltest dein Script cron-gesteuert ausführen lassen.

Einen Eintrag in der crontab erstellst du, in dem du einfach ein crontab -e eingibst.

siehe dazu auch http://www.linuxfibel.de/time.htm
Oh, yeah!

Benutzeravatar
neogrande
Beiträge: 45
Registriert: 05.03.2005 11:11:43

Beitrag von neogrande » 08.08.2006 13:21:55

...ich dachte KCron ist nur das Frontent dazu...

Benutzeravatar
SubOptimal
Beiträge: 1709
Registriert: 10.01.2005 23:25:46
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: bei Frankfurt

Beitrag von SubOptimal » 08.08.2006 23:09:20

Hi neogrande,

Code: Alles auswählen

AKT_IP=`$HOME /home/makoer/.aktuelle_ip`
Wie soll denn der Inhalt aus .aktuelle_ip in die Variable kommen?

Du könntest das z.B. so lösen

Code: Alles auswählen

AKT_IP=`cat /home/makoer/.aktuelle_ip`
Das mit der $PRUEF_IP kann man ohne die HTML Seite schlecht prüfen. Aber ich denke das wird schon was ausspucken, wenn Du das in d Konsole testest.
Könnte eventuell eine Passwortabfrage das Problem sein?
SubOptimal

Benutzeravatar
neogrande
Beiträge: 45
Registriert: 05.03.2005 11:11:43

Beitrag von neogrande » 09.08.2006 11:17:59

*grml*
das mit der AKT_IP war ein dummer fehler beim reinkopiere. Ich wollte eigentlich das /home/makoer durch $HOME ersetzen, um das ursprüngliche Script zu posten...
Das cat war da schon drin ;-)

Der wget-grep-Ausdruck funktioniert, habe ich ja mehrmals getestet...

Na, ich hab jetzt jedenfalls so ne Art daemon draus gemacht, funktioniert einwandfrei.

Antworten