Skript wird nicht bzw. nicht richtig ausgeführt

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
DerGute
Beiträge: 20
Registriert: 03.12.2004 09:38:25

Skript wird nicht bzw. nicht richtig ausgeführt

Beitrag von DerGute » 03.12.2004 12:01:53

Hallo,

ich programmiere noch nicht lange in der Shell, bin daher noch ziemlicher Anfänger.
Ich hab mir 2 Skripte erstellt zur Traffic-Kontrolle mit HTB, diese funktionieren auch korrekt wenn ich sie manuell auf der Konsole aufrufe.
Nun hätte ich gerne, dass je eines der Skripte zu einer bestimmten Uhrzeit täglich ausgeführt wird. Zu diesem Zweck hab ich das Skript mittels Webmin zu den Cron-Jobs hinzugefügt. Das Skript wird auch aufgerufen und ausgeführt (zumindest denke ich das, da das Skript beim Ausführen Ausgaben in eine Log-Datei erzeugt und diese Ausgaben sind vorhanden).
Das Problem: die Regeln, die das Skript aufstellt (u.a. für IPTables) sind NICHT aktiv. Ich muss also manuell in die Konsole gehen, das Skript aufrufen, dann funktionieren die Regeln.

Kann sich jemand einen Reim darauf machen? Hab ich irgendwas vergessen oder mache ich etwas grundsätzlich falsch?

System ist Debian Woody mit 2.4.27er Kernel, komplett up-to-date.

Falls nötig kann ich später den Code des Skripts posten, geht nur im Moment nicht da ich nicht daheim bin.

Danke schonmal,
Matthias

ernohl
Beiträge: 1248
Registriert: 04.07.2002 08:11:56
Wohnort: HL

Beitrag von ernohl » 03.12.2004 12:23:17

Die Umgebungsvariablen des cron-Jobs unterscheiden sich von denen in der shell. Du musst diese im cron-Script passend setzen. Oft reicht die PATH-Variable.
Gruß
ernohl

Benutzeravatar
bluelupo
Beiträge: 153
Registriert: 26.10.2004 11:15:30
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Südostbayern

Re: Skript wird nicht bzw. nicht richtig ausgeführt

Beitrag von bluelupo » 03.12.2004 12:30:20

DerGute hat geschrieben: [...]
Falls nötig kann ich später den Code des Skripts posten, geht nur im Moment nicht da ich nicht daheim bin.

Danke schonmal,
Matthias
Hi Matthias,
lass webmin mal beiseite. Poste die root crontab (als root: crontab -l) dann lässt sich das Problem besser einkreisen.
Ciao
bluelupo

DerGute
Beiträge: 20
Registriert: 03.12.2004 09:38:25

Beitrag von DerGute » 03.12.2004 23:46:41

ernohl hat geschrieben:Die Umgebungsvariablen des cron-Jobs unterscheiden sich von denen in der shell. Du musst diese im cron-Script passend setzen. Oft reicht die PATH-Variable.
könntest du das etwas genauer formulieren? Welche Path-Variable soll ich wo setzen?

crontab -l zeigt nur mein Skript an, um das es auch geht (ist im Moment deaktiviert):

Code: Alles auswählen

# 2 3 * * * /etc/init.d/qos-on

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 03.12.2004 23:56:55

ich würde einmal die ausgabe von stdout und stderr in eine log datei umleiten.

in der log datei siehst du dann genau welches kommando einen fehler zurück liefert

also das script in etwa so aufrufen:

Code: Alles auswählen

myscript 1>/var/log/myscript.log  2>&1

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Re: Skript wird nicht bzw. nicht richtig ausgeführt

Beitrag von fuzzy » 04.12.2004 05:31:20

Hallo DerGute,
DerGute hat geschrieben: Das Problem: die Regeln, die das Skript aufstellt (u.a. für IPTables) sind NICHT aktiv. Ich muss also manuell in die Konsole gehen, das Skript aufrufen, dann funktionieren die Regeln.

[...]

crontab -l zeigt nur mein Skript an, um das es auch geht (ist im Moment deaktiviert):
Code:

Code: Alles auswählen

# 2 3 * * * /etc/init.d/qos-on
sorry, ich verstehe noch nicht, ob Du ein oder zwei Befehle manuell eingeben musst damit Dein Script funktioniert :roll:

Hier noch ein Linktipp für "cronjobs":
http://www.rootforum.de/forum/viewtopic ... d2baff3a9d

Gruß fuzzy

[EDIT]
Nach "ordentlichem" durchlesen, geht es um 2 Scripte...
Aus meiner Sicht müsstest Du diese durch "cronjobs" so nacheinander Ausführen, wie Du es manuell machst - wenn es klappt.
[/EDIT]

DerGute
Beiträge: 20
Registriert: 03.12.2004 09:38:25

Re: Skript wird nicht bzw. nicht richtig ausgeführt

Beitrag von DerGute » 04.12.2004 11:19:40

Hallo Fuzzy,

[
sorry, ich verstehe noch nicht, ob Du ein oder zwei Befehle manuell eingeben musst damit Dein Script funktioniert :roll:
es handelt sich nur um einen Befehl - nämlich der Aufruf des Skriptes "qos-on", das im Ordner /etc/init.d liegt.
Hier noch ein Linktipp für "cronjobs":
http://www.rootforum.de/forum/viewtopic ... d2baff3a9d
danke, das werd ich mir mal anschauen.
Nach "ordentlichem" durchlesen, geht es um 2 Scripte...
Aus meiner Sicht müsstest Du diese durch "cronjobs" so nacheinander Ausführen, wie Du es manuell machst - wenn es klappt.
nein, ist nur ein Skript ;)
Ich hab zwar oben zwei Skripte erwähnt, das zweite tut aber im Moment nichts zur Sache.

Ich hab das Skript jetzt übrigens mal in /etc/ppp/ip-up.d verlinkt, und siehe da, es wird korrekt ausgeführt (natürlich immer nur dann, wenn eine Verbindung aufgebaut wird). Scheint also tatsächlich irgendwie mit den Cronjobs zu tun zu haben.
ich würde einmal die ausgabe von stdout und stderr in eine log datei umleiten.
Danke für den Tipp, das werd ich machen.

fuzzy
Beiträge: 1021
Registriert: 04.10.2003 12:15:52

Re: Skript wird nicht bzw. nicht richtig ausgeführt

Beitrag von fuzzy » 04.12.2004 14:04:41

DerGute hat geschrieben: es handelt sich nur um einen Befehl - nämlich der Aufruf des Skriptes "qos-on", das im Ordner /etc/init.d liegt.

Ich hab das Skript jetzt übrigens mal in /etc/ppp/ip-up.d verlinkt, und siehe da, es wird korrekt ausgeführt (natürlich immer nur dann, wenn eine Verbindung aufgebaut wird). Scheint also tatsächlich irgendwie mit den Cronjobs zu tun zu haben.
Eine andere Möglichkeit ist "update-rc.d" damit könntest Du das Script immer und dauerhaft starten... http://openoffice.de/linux/buch/init.html

Ich weiß allerdings überhaupt nicht ob das Deine Absicht ist.
...sofern es um "iptables" geht würde ich immer probieren dieses dauerhaft zu "aktivieren" und bei Bedarf eine Internetverbindung herzustellen - soweit meine Meinung dazu :wink:

Gruß fuzzy

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

Re: Skript wird nicht bzw. nicht richtig ausgeführt

Beitrag von roli » 05.12.2004 15:49:08

Hi Matthias,

ein Problem das oft auftritt wenn man seine Scripte mettels cron automatisiert, ist wie hier auch schon beschrieben, das sich die Umgebungsvariablen unterscheiden, z.B. der PATH.
DerGute hat geschrieben:Ich muss also manuell in die Konsole gehen, das Skript aufrufen, dann funktionieren die Regeln.

Kann sich jemand einen Reim darauf machen?
Mir stellt sich folgende Frage:
Wer (welcher User) ist "ich"? Ist dies der User (root?) in dessen crontab du das Script eingefuegt hast?

Schreib doch in dein Script einfach mal folgendes:

Code: Alles auswählen

set >/tmp/env_var.txt
Damit werden die Environment Einstellungen in die Datei /tmp/env_var.txt geschrieben.
Dann laesst du dein Script einmal per cron laufen, verschiebst die Datei /tmp/env_var.txt irgendwohin, und dann startest du das Script nochmal als User "ich", mit dem es geht.
Nun vergleichst du die beiden Dateien. Ich gehe mal davon aus, das es Unterschiede gibt, dann koenntest du mal testen woran es liegt.
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"

Antworten