Skript wird nicht bzw. nicht richtig ausgeführt
Skript wird nicht bzw. nicht richtig ausgeführt
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
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
- 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
Hi Matthias,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
lass webmin mal beiseite. Poste die root crontab (als root: crontab -l) dann lässt sich das Problem besser einkreisen.
Ciao
bluelupo
bluelupo
könntest du das etwas genauer formulieren? Welche Path-Variable soll ich wo setzen?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.
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
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:
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
Re: Skript wird nicht bzw. nicht richtig ausgeführt
Hallo DerGute,
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]
sorry, ich verstehe noch nicht, ob Du ein oder zwei Befehle manuell eingeben musst damit Dein Script funktioniertDerGute 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
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]
Re: Skript wird nicht bzw. nicht richtig ausgeführt
Hallo Fuzzy,
[
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.
[
es handelt sich nur um einen Befehl - nämlich der Aufruf des Skriptes "qos-on", das im Ordner /etc/init.d liegt.sorry, ich verstehe noch nicht, ob Du ein oder zwei Befehle manuell eingeben musst damit Dein Script funktioniert
danke, das werd ich mir mal anschauen.Hier noch ein Linktipp für "cronjobs":
http://www.rootforum.de/forum/viewtopic ... d2baff3a9d
nein, ist nur ein SkriptNach "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.
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.
Danke für den Tipp, das werd ich machen.ich würde einmal die ausgabe von stdout und stderr in eine log datei umleiten.
Re: Skript wird nicht bzw. nicht richtig ausgeführt
Eine andere Möglichkeit ist "update-rc.d" damit könntest Du das Script immer und dauerhaft starten... http://openoffice.de/linux/buch/init.htmlDerGute 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.
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
Gruß fuzzy
Re: Skript wird nicht bzw. nicht richtig ausgeführt
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.
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:
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.
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.
Mir stellt sich folgende Frage: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?
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
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"
"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"