Hallo Herbert, hallo Leute, Am Mittwoch, 13. August 2003 14:47 schrieb Herbert Schrader:
habe mir ein kleines shellscript script.sh geschrieben. Dies liegt unter /.
*aua* In / legt man keine Scripte ab. Verschieb das mal schnell nach /usr/local/bin oder ~/bin ;-)
Rufe ich es manuell auf, gibt es keine Probleme, die Daten werden in die Datenbank eingelesen. Wird es aber von cron (Benutzer:root, /script.sh) aufgerufen, kommen keine Daten in mysql an. Man. Testaufruf des cronjobs aus webmin heraus ergibt keine Anhaltspunkte, alles ok. Automatische Ausführung bringt folgende Fehlermeldung in der Con-Mail: mysqlimport: Error: Can't get stat of '/root/datei.csv' (Errcode: 13), when using table: datei
Wo könnte der Fehler liegen?
Wie so oft: Du verwendest etliche relative Pfade! Zum Einen hat Cron einen sehr eingeschränkten PATH, zum Anderen verwendet er wohl auch ein anderes Arbeitsverzeichnis als Du erwartest.
#! /bin/sh wget http://domain/path_to_file/filecsv.php
wget legt die Datei im Arbeitsverzeichnis ab. (Wo ist das bei Cron?) Besser: /usr/bin/wget http://..... -O /pfad/zur/ausgabedatei ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^
sed -e '1,$s/,/./g' filecsv.php > datei.csv ^^^^^^^^^^^ ^^^^^^^^^ Auch hier: Absolute Pfade verwenden.
chmod 666 datei.csv ^^^^^^^^^
BTW: Wieso machst Du diese Datei für alle beschreibbar?
rm filecsv.php ^^^^^^^^^^^ mysqlimport -dl --fields-enclosed-by='"' --fields-terminated-by=";" --fields -escaped-by="\\" datenbank datei.csv ^^^^^^^^^ rm datei.csv ^^^^^^^^^
Und jetzt rate mal, warum ich das alles unterstrichen habe ;-) (Hint: Ich wollte mich nicht wiederholen...)
PS: Die Variante sed -e '1,$s/,/./g' filecsv.php > /root/datei.csv ^^^^^^^^^^^ bringt auch nichts.
Rate mal, warum... Gruß Christian Boltz -- PS: Ich hab mir nedit mehrfach angeschaut. Da nehm ich dann doch noch lieber vim. Danke. [David Haller (überzeugter Xemacsianer) in suse-linux]