Problem mit Perl-Skript als Cron-Job [geloest]

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Problem mit Perl-Skript als Cron-Job [geloest]

Beitrag von nepos » 22.08.2006 11:23:09

Hallo zusammen!

Ich hab hier ein Problem mit einem Perl-Skript und zwar nur dann, wenn es als Cron-Job aufgerufen wird:
Das Skript ueberprueft mittels dem Operator -w ob ein gegebenes Verzeichnis beschreibbar ist.
Wenn ich das Skript in der Shell haendisch aufrufe, dann liefert der Test, dass das Verzeichnis beschreibbar ist.
Wenn das Skript im Cron-Job gestartet wird, liefert der gleiche Test, dass das Verzeichnis nicht beschreibbar ist.
Ich habe mir auch schon mittels der Funktion stat() mal die Berechtigungen auf das Verzeichnis ausgeben lassen. Dort erhalte ich ein 775, was dem entspricht, was ich erwarte...

Es macht auch keinen Unterschied, wenn ich statt -w die Test -W benutze. In beiden Faellen sagt mir der Test im Cron-Job, dass das Verzeichnis nicht beschreibbar waere, in der Shell aufgerufen klappts dagegen...

Woran koennte das liegen? Ich bin im Moment echt ratlos...
Danke euch schon mal!

Ciao,
Nepos
Zuletzt geändert von nepos am 22.08.2006 13:02:27, insgesamt 1-mal geändert.

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

Beitrag von roli » 22.08.2006 12:37:04

Hi,

solche Fehler deuten gewoehnlicherweise darauf hin, das das Environment deines Useres, und das des Cron Users nicht gleich sind.
Wenn das Skript im Cron-Job gestartet wird, liefert der gleiche Test, dass das Verzeichnis nicht beschreibbar ist.
Ich habe mir auch schon mittels der Funktion stat() mal die Berechtigungen auf das Verzeichnis ausgeben lassen. Dort erhalte ich ein 775, was dem entspricht, was ich erwarte...
Kann es sein das der Cron User nicht in der Gruppe ist, die erwartet wird?
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"

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 22.08.2006 12:49:00

Ok, die Sache wird immer komischer. Folgender kleiner Code-Ausschnitt:

Code: Alles auswählen

      my $test = -W "$INTRANETDIRPDF/$relativePath";

      print "Test returned: ", Dumper(\$test),"\n" if $DEBUG;

      warn BOLD, RED, "Verzeichnis \"$INTRANETDIRPDF/$relativePath\" nicht beschreibbar!", RESET unless ( $test );
Wenn das Skript via root-Crontab aufgerufen wird, liefert die Ausgabe von Dumper:

Code: Alles auswählen

Test returned: $VAR1 = \'1';
Das heisst, der Test war erfolgreich, das Verzeichnis ist beschreibbar.
Gleichzeitig wird allerdings auch das warn() ausgefuehrt...

Starte ich das ganze als root auf der Konsole, dann kriege ich die gleiche Ausgabe von Dumper, allerdings springt das warn nicht an...

Ein

Code: Alles auswählen

ls -la /Berichte/SLA-2.5/pdf/2006
liefert mir:

Code: Alles auswählen

drwxrwxr-x    1 root     reportin     4096 Aug 11 10:25 .
drwxrwxr-x    1 root     reportin     4096 Feb 15  2006 ..
drwxrwxr-x    1 root     reportin     4096 Apr 20 15:22 01
drwxrwxr-x    1 root     reportin     4096 Mar 28 16:28 02
drwxrwxr-x    1 root     reportin     4096 Apr 27 12:58 03
drwxrwxr-x    1 root     reportin     4096 Jul 17 15:48 04
drwxrwxr-x    1 root     reportin     4096 Aug 11 10:25 05
drwxrwxr-x    1 root     reportin     4096 Jul 21 15:09 06
drwxrwxr-x    1 root     reportin     4096 Aug 11 10:25 07
Das Verzeichnis befindet sich auf einem Mountpoint, der per Samba von einem anderen Server eingebunden wird. Dabei wird die fmask auf 0664, die dmask auf 0775 und die gid auf 101 (reporting) gesetzt. Sprich, alle Dateien und Verzeichnisse unter diesem Mountpoint haben die gleichen Berechtigungen und Besitzer/Gruppe.

@Roli: der Cron-User ist in diesem Fall root, da das Skript auch in der root-Crontab ausgefuehrt wird. Ich lasse mir nun auch Testweise die beiden Variablen $< und $> fuer die UID bzw. effektive UID ausgeben. Beiden sagen mir, dass ich als UID 0, also root unterwegs bin...

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

Beitrag von roli » 22.08.2006 12:56:58

Dann werde ich mal tief in mich gehen, vielleicht kommt ja noch die Erleuchtung, wobei ich im Moment auch ratlos bin 8-(
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"

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 22.08.2006 13:02:02

Brauchst du nicht, ein saubloeder Fehler ist da drin:

Code: Alles auswählen

warn BOLD, RED, "Verzeichnis \"$INTRANETDIRPDF/$relativePath\" nicht beschreibbar!" unless ( $test ), RESET;
Steht im Skript. Es sollte allerdings:

Code: Alles auswählen

warn BOLD, RED, "Verzeichnis \"$INTRANETDIRPDF/$relativePath\" nicht beschreibbar!", RESET unless ( $test );
heissen, wie ich es gepostet hatte (da hab ichs ohne nachzudenken geaendert).

Manchmal sieht man den Wald vor lauter Baeumen eben nicht...
Danke dir trotzdem!

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

Beitrag von roli » 22.08.2006 13:16:30

nepos hat geschrieben:Brauchst du nicht
Prima, da ich auch gerade an was haenge, habe ich auch noch nicht damit angefangen ;-}
nepos hat geschrieben:ein saubloeder Fehler ist da drin
Hast du auch schon mal Fehler gemacht die nich "saubloed" sind, meine sind's eigentlich immer (ist nicht persoenlich gemeint). Entweder das ganze ist so simpel, das ich's haette sehen MUESSEN, oder so komplex, das ich's ueberaupt nicht wusste. Die Fehler die dazischen liegen kommen nur vor wenn Ostern und Neujahr auf einen Tag faellt.
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