Discussion:
FTP upload script
(zu alt für eine Antwort)
Ulrich Hupe
2019-02-16 11:10:53 UTC
Permalink
Hallo,
ich möchte gern per script einen file vom eisfair auf auf einen externen
Server, hier t-online via ftp uploaden.
etwa so:
HOST='meine.homepage.t-online.de'
USER='***@meine.homepage.t-online.de'
PWD='passwort'
FILE='file.txt'
ftp -n $HOST
user $USER
pwd $PWD
put $FILE
bye

Er connectet sich zwar, bleibt aber mit ftp> stehen,
Er kennt anscheinend die Befehle so nicht.
FTP muß das eigentlich können, oder besser lftp?

Kennt jemand den Syntax?

Ulrich
Marcus Roeckrath
2019-02-16 11:35:36 UTC
Permalink
Hallo Ulrich,
Post by Ulrich Hupe
Server, hier t-online via ftp uploaden.
HOST='meine.homepage.t-online.de'
PWD='passwort'
FILE='file.txt'
ftp -n $HOST
user $USER
pwd $PWD
put $FILE
bye
Klar, weil der Rest nicht in den ftp geleitet wird.

Ich mache es so, wobei hier eine Datei auf dem Server gelöscht wird:

ftp -i -n ${webhost} >/dev/null <<EOF
user ${webuser} ${webpassword}
delete week/plan/doc/"${1}"
quit
EOF

Alles zwischen <<EOF und EOF wird in den ftp als Input reingeschoben.
--
Gruss Marcus
Ulrich Hupe
2019-02-16 16:22:46 UTC
Permalink
Hallo,
danke, t-online war da irgendwie doch noch recht speziell
Post by Marcus Roeckrath
ftp -i -n ${webhost} >/dev/null <<EOF
user ${webuser} ${webpassword}
delete week/plan/doc/"${1}"
quit
EOF
hier meine Version, die jetzt so geht:

ftp -i -n -v $HOST <<EOF
user $USER $PASSWD $HOST
passive
cd /var/www/dir/
put $FILE
bye
EOF

Ulrich
Marcus Roeckrath
2019-02-16 16:32:48 UTC
Permalink
Hallo Ulrich,
Post by Ulrich Hupe
danke, t-online war da irgendwie doch noch recht speziell
Feinheiten muss man sich meist hart earbeiten - Kein Fleiß, kein Preis. :-)
Post by Ulrich Hupe
ftp -i -n -v $HOST <<EOF
user $USER $PASSWD $HOST
passive
cd /var/www/dir/
put $FILE
bye
EOF
Sieht gut aus, Erweterungen steht ja dann später auch nichts mehr entgegen.
--
Gruss Marcus
Ulrich Hupe
2019-02-17 09:39:45 UTC
Permalink
Hallo,
Post by Marcus Roeckrath
Post by Ulrich Hupe
ftp -i -n -v $HOST <<EOF
user $USER $PASSWD $HOST
passive
cd /var/www/dir/
put $FILE
bye
EOF
Sieht gut aus, Erweterungen steht ja dann später auch nichts mehr entgegen.
besten Dank, allerdings was mich ratlos macht ist der Umstand, dass das
script zwar so funktioniert wie ich das möchte.
Wenn ich das aber mit cron aufrufe, nicht!
Laut log wird der cron job abgearbeitet und completet .
Aber nichts kommt an.

???
Ulrich
Juergen Edner
2019-02-17 12:36:27 UTC
Permalink
Hallo Ulrich,
Post by Ulrich Hupe
besten Dank, allerdings was mich ratlos macht ist der Umstand, dass das
script zwar so funktioniert wie ich das möchte.
Wenn ich das aber mit cron aufrufe, nicht!
Laut log wird der cron job abgearbeitet und completet .
Aber nichts kommt an.
???
das Environment des Users unter dem ein Cronjob ausgeführt wird
ist üblicherweise sehr eingeschränkt. Ich würde deshalb einmal
mit dem vollständigen Programmpfad arbeiten:

/usr/bin/ftp

Gruß Jürgen
--
Mail: ***@eisfair.org
Ulrich Hupe
2019-02-17 14:23:40 UTC
Permalink
Hallo Jürgen,

habe ich getestet, macht aber keinen Unterschied

Ich würde deshalb einmal
Post by Juergen Edner
/usr/bin/ftp
er kennt das Directory des zu übertragenen files nicht mehr:
550 /var/www/files/: No such file or directory
oder
550 /var/www/files/text.txt: No such file or directory

egal wie ich das auch eingebe....

Gruß,
ulrich
Juergen Edner
2019-02-17 15:18:53 UTC
Permalink
Hallo Ulrich,
Post by Ulrich Hupe
550 /var/www/files/: No such file or directory
oder
550 /var/www/files/text.txt: No such file or directory
egal wie ich das auch eingebe....
unter welchem Systemuser führst Du dass Upload-Skript aus,
unter root, wwwrun, etc.? Es wäre möglich, dass der verwendete
User keinen Zugriff auf das Verzeichnis bzw. die Datei hat.

Gruß Jürgen
--
Mail: ***@eisfair.org
Marcus Roeckrath
2019-02-17 18:05:46 UTC
Permalink
Hallo Ulrich,
Post by Ulrich Hupe
habe ich getestet, macht aber keinen Unterschied
Hätte ich für /usr/bin auch nicht erwartet.
Post by Ulrich Hupe
550 /var/www/files/: No such file or directory
oder
550 /var/www/files/text.txt: No such file or directory
Wo ist der Pfad? Auf dem Quell- oder Zielsystem?

In deinem Codeschnipsel sehe ich nur /var/www/dir.

Bitte poste mal das gesamte Skript.

Wer ist der ausführende User?
--
Gruss Marcus
Ulrich Hupe
2019-02-17 19:27:15 UTC
Permalink
Also,
Post by Marcus Roeckrath
Post by Ulrich Hupe
550 /var/www/files/: No such file or directory
oder
550 /var/www/files/text.txt: No such file or directory
Wo ist der Pfad? Auf dem Quell- oder Zielsystem?
jetzt läuft es erst mal.
script und Datei lagen und liegen im gleichen Verzeichnis
/var/www/dir/
wenn ich das auf der Konsole ausführe, muß ich in das Verzeichnis
wechseln, oder den gesamten Pfad angeben.
Damit paßt das.
Im cron stimmen diese Dinge nicht mehr überein.
ich gebe zwar den Pfad an:
/var/www/dir/script.sh
trotzdem erkennt er nicht den Pfad der Datei
im log steht: Datei oder directory nicht bekannt, egal was ich im script
angebe.
ftp läuft ja auch im /usr/bin/

HOST='meine.homepage.t-online.de'
USER='***@meine.homepage.t-online.de'
PASSWD='geheim'
FILE='datei.htm' <--- (auch der ganze Pfad funktioniert nicht)
/usr/bin/ftp -i -n -v $HOST >/var/www/log/ftplog <<EOF
user $USER $PASSWD $HOST
passive
put $FILE
bye
EOF

gebe ich im cron job:
cd /var/www/dir/ ; ./script.sh
an, geht es natürlich, womit ich auch leben kann

wie man das im script selbst anpasst, auch wenn beides nicht in einem
dir läge, weiß ich nicht

Gruß,
Ulrich
Marcus Roeckrath
2019-02-17 19:39:42 UTC
Permalink
Hallo Ulrich,
Post by Ulrich Hupe
wenn ich das auf der Konsole ausführe, muß ich in das Verzeichnis
wechseln, oder den gesamten Pfad angeben.
Damit paßt das.
Im cron stimmen diese Dinge nicht mehr überein.
/var/www/dir/script.sh
Damit rufst du zwar das Skript im angegebenen Pfad auf, aber das wchselt
natürlich nicht in diesen Pfad.
Post by Ulrich Hupe
cd /var/www/dir/ ; ./script.sh
an, geht es natürlich, womit ich auch leben kann
Weil du damit im Pfad stehst.

Du kannst auch ein cd im Skript selbst vor dem ftp-Aufruf machen.

Für die Übertragung einer Datei geht auch ein curl-Einzeiler:

curl -T ${file} ftp://${host}/${path} --user ${user}:${password}

überträgt file nach host/path.
Post by Ulrich Hupe
wie man das im script selbst anpasst, auch wenn beides nicht in einem
dir läge, weiß ich nicht
Vor dem ftp-Aufruf in das Verzeichnis der zu sendenden datei wechseln.
--
Gruss Marcus
Juergen Edner
2019-02-17 20:16:46 UTC
Permalink
Hallo zusammen,
Post by Marcus Roeckrath
Post by Ulrich Hupe
wie man das im script selbst anpasst, auch wenn beides nicht in einem
dir läge, weiß ich nicht
Vor dem ftp-Aufruf in das Verzeichnis der zu sendenden datei wechseln.
vielleicht hilft dies weiter:

lpwd - zeigt das aktuelle lokale Verzeichnis an.
lcd - wechselt das lokale Vrzeichnis.

und im Gegensatz dazu

pwd - zeigt das aktuelle Verzeichnis auf dem entfernten FTP-Server an.
cd - wechselt das entfernete Verzeichnis auf dem FTP-Server.

Gruß Jürgen
--
Mail: ***@eisfair.org
Ulrich Hupe
2019-02-18 09:34:51 UTC
Permalink
Hallo zusammen,

vielen Dank für die vielen Antworten und Anregungen

:-)
Ulrich
Marcus Roeckrath
2019-02-17 18:03:27 UTC
Permalink
Hallo Jürgen,
Post by Juergen Edner
das Environment des Users unter dem ein Cronjob ausgeführt wird
ist üblicherweise sehr eingeschränkt. Ich würde deshalb einmal
/usr/bin/ftp
Nach meinen Erfahrungen ist /usr/bin immer im Path, egal unter welchem user
der Job ausgeführt wird.

Die sbin-Pfade sind irgendwann mal im fcron aus dem Path geflogen.
--
Gruss Marcus
Olaf Jaehrling
2019-02-16 11:54:52 UTC
Permalink
Hallo Ulrich,
Post by Ulrich Hupe
Hallo,
ich möchte gern per script einen file vom eisfair auf auf einen externen
Server, hier t-online via ftp uploaden.
HOST='meine.homepage.t-online.de'
PWD='passwort'
FILE='file.txt'
ftp -n $HOST
user $USER
pwd $PWD
put $FILE
bye
Er connectet sich zwar, bleibt aber mit ftp> stehen,
Er kennt anscheinend die Befehle so nicht.
FTP muß das eigentlich können, oder besser lftp?
lftp gibt es als eisfair-Paket

https://ojaehrling.de/eis/index.txt

Gruß und schönes WE.

Olaf
Post by Ulrich Hupe
Kennt jemand den Syntax?
Ulrich
Ulrich Hupe
2019-02-16 15:12:12 UTC
Permalink
Hallo Olaf,
Post by Olaf Jaehrling
lftp gibt es als eisfair-Paket
https://ojaehrling.de/eis/index.txt
ja, habe ich mal installiert, allerdings ist die Doku etwas wenig.
Es scheint, als könnte ich da nur directories angeben

Ulrich
Detlef Paschke
2019-02-16 19:26:45 UTC
Permalink
Am 16.02.2019 um 16:12 schrieb Ulrich Hupe:

Hallo Ulrich,
Post by Ulrich Hupe
ja, habe ich mal installiert, allerdings ist die Doku etwas wenig.
Es scheint, als könnte ich da nur directories angeben
mache ich mit einer Zeile mit lftp.
Post by Ulrich Hupe
Ulrich
Viele Grüße
Detlef Paschke
--
registered Fli4l-User #00000209
Das "Zitat des Augenblicks" gibt es nur auf
http://www.schabau.goip.de
Detlef Paschke
2019-02-16 19:48:46 UTC
Permalink
Post by Detlef Paschke
mache ich mit einer Zeile mit lftp.
Nein quatsch, bei lftp musste user und pass extra und nicht in der
Adresse sein:
lftp -e "put -O /ziel /text.txt; bye" -u user,pass host.lan

Viele Grüße
Detlef Paschke
--
registered Fli4l-User #00000209
Das "Zitat des Augenblicks" gibt es nur auf
http://www.schabau.goip.de
Olaf Jaehrling
2019-02-17 20:44:02 UTC
Permalink
Hallo Ulrich,
Post by Ulrich Hupe
Hallo Olaf,
Post by Olaf Jaehrling
lftp gibt es als eisfair-Paket
https://ojaehrling.de/eis/index.txt
ja, habe ich mal installiert, allerdings ist die Doku etwas wenig.
Es scheint, als könnte ich da nur directories angeben
was genau möchtest du?

Gruß

Olaf
Post by Ulrich Hupe
Ulrich
Ulrich Hupe
2019-02-18 09:42:38 UTC
Permalink
Hallo Olaf,
Post by Olaf Jaehrling
Post by Ulrich Hupe
Post by Olaf Jaehrling
lftp gibt es als eisfair-Paket
https://ojaehrling.de/eis/index.txt
ja, habe ich mal installiert, allerdings ist die Doku etwas wenig.
Es scheint, als könnte ich da nur directories angeben
Die Doku ist da leer.
Post by Olaf Jaehrling
was genau möchtest du?
Idealerweise die Angabe von HOST USER PASS (ist ja da)
Quelle und Ziel für Dateien
übertragende Datei (* für Inhalte von DIR)

Ich denke aber das wäre zu aufwendig, das alles in eine config zu packen.

Ulrich

Loading...