Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Prüfen ob Datei auf Server existiert

60 views
Skip to first unread message

Sven Schmieder

unread,
Oct 22, 2009, 4:42:21 PM10/22/09
to
Hallo Ng,

habe ein Problem mit einem Script:

-----
#!/bin/sh

1. # Datum in Variable Speichern
DATUM=$(date +%Y%m%d)

2.

3. # Datei runterladen
wget -O $DATUM.pdf "adresse-der-datei"

4. # Datei auf Server laden
wput -N $DATUM.pdf ftp://user:password@server/
-----

An Punkt 2. soll geprüft werden, ob auf dem FTP-Server schon die Datei
(heute bspw. "20092210.pdf") existiert. Wenn ja, beende das Script, wenn
nein, arbeite die Schritte 3+4 ab. Weiß nicht, wie ich das für einen
entfernten FTP machen soll.
Die Schritte 1+3+4 funktionieren.
Wer hilft mir auf die Sprünge?

Danke
Gruß
Sven

Bernd Hohmann

unread,
Oct 22, 2009, 4:57:21 PM10/22/09
to
Sven Schmieder schrieb:

> An Punkt 2. soll geprüft werden, ob auf dem FTP-Server schon die Datei
> (heute bspw. "20092210.pdf") existiert. Wenn ja, beende das Script, wenn
> nein, arbeite die Schritte 3+4 ab. Weiß nicht, wie ich das für einen
> entfernten FTP machen soll.

Eigentlich am schnellsten, wenn Du dich doof stellst und versuchst via
"wget" die Datei zu holen. Ist sie nicht da, hast Du auch nachher keine
Datei auf der Platte.

Blöde ist nur, dass Du -O verwendest, dann geht das nicht (da macht er
eigentlich ein "wget FILE > OUTFILE" und wenn nix kommt, bleibt die
Datei leer).

Da Du aber weisst, wie die Datei "drüben" heisst, würde ich sie einfach
ohne "-O" erstmal ziehen und wenn sie dann wirklich da ist, umbenennen.

Bernd

--
Visit http://www.nixwill.de and http://www.spammichvoll.de
jean....@nixwill.de & bernado....@spammichvoll.de

Tobias Nissen

unread,
Oct 22, 2009, 5:04:27 PM10/22/09
to
Sven Schmieder wrote:
> #!/bin/sh
>
> 1. # Datum in Variable Speichern
> DATUM=$(date +%Y%m%d)
>
> 2.
>
> 3. # Datei runterladen
> wget -O $DATUM.pdf "adresse-der-datei"
>
> 4. # Datei auf Server laden
> wput -N $DATUM.pdf ftp://user:password@server/
> -----
>
> An Punkt 2. soll geprüft werden, ob auf dem FTP-Server schon die
> Datei (heute bspw. "20092210.pdf") existiert. Wenn ja, beende das
> Script, wenn nein, arbeite die Schritte 3+4 ab. Weiß nicht, wie ich
> das für einen entfernten FTP machen soll.

if wget -q --delete-after $DATUM.pdf; then exit; fi

Marcel Bruinsma

unread,
Oct 22, 2009, 6:38:00 PM10/22/09
to
Am Donnerstag, 22. Oktober 2009 22:42, Sven Schmieder a écrit :

> 1. # Datum in Variable Speichern
> DATUM=$(date +%Y%m%d)
>
> 2.

ftp -v ftp://user:password@server/ <<EOF 2>&1|
grep -q '^200 CHMOD '
chmod 0644 $DATUM.pdf
bye
EOF
[ $? -ne 0 ] || exit 2

> 3. # Datei runterladen
> wget -O $DATUM.pdf "adresse-der-datei"
>
> 4. # Datei auf Server laden
> wput -N $DATUM.pdf ftp://user:password@server/
>

> An Punkt 2. soll geprüft werden, ob auf dem FTP-Server schon
> die Datei (heute bspw. "20092210.pdf") existiert.

Ggf. 0644 ersetzen durch den üblichen Wert.

--
printf -v email $(echo \ 155 141 162 143 145 154 142 162 165 151 \
156 163 155 141 100 171 141 150 157 157 056 143 157 155|tr \ \\\\)
# Live every life as if it were your last! #

Marcel Bruinsma

unread,
Oct 22, 2009, 7:02:58 PM10/22/09
to
Am Freitag, 23. Oktober 2009 00:38, Marcel Bruinsma a écrit :

> ftp -v ftp://user:password@server/ <<EOF 2>&1|

ftp -v ftp://user:password@server/ <<EOF 2>&1 | \

> grep -q '^200 CHMOD '
> chmod 0644 $DATUM.pdf
> bye
> EOF
> [ $? -ne 0 ] || exit 2

--

Juergen P. Meier

unread,
Oct 23, 2009, 12:51:21 AM10/23/09
to
Bernd Hohmann <bernd.hohma...@freihaendler.com>:
> Sven Schmieder schrieb:
>
>> An Punkt 2. soll geprᅵft werden, ob auf dem FTP-Server schon die Datei
>> (heute bspw. "20092210.pdf") existiert. Wenn ja, beende das Script, wenn
>> nein, arbeite die Schritte 3+4 ab. Weiᅵ nicht, wie ich das fᅵr einen
>> entfernten FTP machen soll.
>
> Eigentlich am schnellsten, wenn Du dich doof stellst und versuchst via
> "wget" die Datei zu holen. Ist sie nicht da, hast Du auch nachher keine
> Datei auf der Platte.
>
> Blᅵde ist nur, dass Du -O verwendest, dann geht das nicht (da macht er
> eigentlich ein "wget FILE > OUTFILE" und wenn nix kommt, bleibt die
> Datei leer).
>
> Da Du aber weisst, wie die Datei "drᅵben" heisst, wᅵrde ich sie einfach
> ohne "-O" erstmal ziehen und wenn sie dann wirklich da ist, umbenennen.

wget kennt --spider

Tobias Nissen

unread,
Oct 23, 2009, 3:46:48 AM10/23/09
to
Juergen P. Meier wrote:
> Bernd Hohmann <bernd.hohma...@freihaendler.com>:
[...]
>> Da Du aber weisst, wie die Datei "drüben" heisst, würde ich sie

>> einfach ohne "-O" erstmal ziehen und wenn sie dann wirklich da ist,
>> umbenennen.
>
> wget kennt --spider

Das ist hier aber etwas umständlich, weil man erst wgets Ausgabe parsen
muss, da es mit --spider keinen (für diesen Fall) sinnigen Rückgabewert
liefert.

Bernd Hohmann

unread,
Oct 23, 2009, 5:40:45 AM10/23/09
to
Juergen P. Meier schrieb:

>> Da Du aber weisst, wie die Datei "drüben" heisst, würde ich sie einfach

>> ohne "-O" erstmal ziehen und wenn sie dann wirklich da ist, umbenennen.
>
> wget kennt --spider

An den Parameter hab ich mich nicht so recht herangetraut weil die Doku
dazu doch etwas knapp ist und ich nicht erkennen kann, was er genau macht.

Andreas Kohlbach

unread,
Oct 23, 2009, 10:00:29 PM10/23/09
to
Tobias Nissen wrote on 23. October 2009:
>
> Juergen P. Meier wrote:
>> Bernd Hohmann <bernd.hohma...@freihaendler.com>:
> [...]
>>> Da Du aber weisst, wie die Datei "dr�ben" heisst, w�rde ich sie

>>> einfach ohne "-O" erstmal ziehen und wenn sie dann wirklich da ist,
>>> umbenennen.
>>
>> wget kennt --spider
>
> Das ist hier aber etwas umst�ndlich, weil man erst wgets Ausgabe parsen
> muss, da es mit --spider keinen (f�r diesen Fall) sinnigen R�ckgabewert
> liefert.

Man kann das ggf. per grep holen. Etwas Nichtvorhandenes sollte einen 404
liefern.

| $ wget http://www.google.de/jkwhfjkfw.html
| --2009-10-23 21:58:51-- http://www.google.de/jkwhfjkfw.html
| Resolving www.google.de... 64.233.169.105, 64.233.169.147, 64.233.169.99, ...
| Connecting to www.google.de|64.233.169.105|:80... connected.
| HTTP request sent, awaiting response... 404 Not Found
| 2009-10-23 21:58:52 ERROR 404: Not Found.
--
Andreas
Linux: The choice of a GNU generation.

Tobias Nissen

unread,
Oct 24, 2009, 2:32:16 AM10/24/09
to
Andreas Kohlbach wrote:
> Tobias Nissen wrote on 23. October 2009:
>> Juergen P. Meier wrote:
>>> Bernd Hohmann <bernd.hohma...@freihaendler.com>:
>> [...]
>>>> Da Du aber weisst, wie die Datei "drüben" heisst, würde ich sie

>>>> einfach ohne "-O" erstmal ziehen und wenn sie dann wirklich da
>>>> ist, umbenennen.
>>>
>>> wget kennt --spider
>>
>> Das ist hier aber etwas umständlich, weil man erst wgets Ausgabe
>> parsen muss, da es mit --spider keinen (für diesen Fall) sinnigen
>> Rückgabewert liefert.

>
> Man kann das ggf. per grep holen. Etwas Nichtvorhandenes sollte einen
> 404 liefern.

Es geht um FTP, daher hat man mit wget nur die Size-Angabe die einem
was sinnvolles verklickert... Bei HTTP funktioniert --spider auch
super, da es bei HTTP-Code != 200 als Rückgabewert eine 1 liefert.

David Haller

unread,
Oct 24, 2009, 6:47:48 PM10/24/09
to
On Sat, 24 Oct 2009 08:32:16 +0200, Tobias Nissen <t...@movb.de> wrote:
> Es geht um FTP, daher hat man mit wget nur die Size-Angabe die einem
> was sinnvolles verklickert... Bei HTTP funktioniert --spider auch
> super, da es bei HTTP-Code != 200 als Rᅵckgabewert eine 1 liefert.

$ curl -I ftp://localhost/; echo $?
0
$ curl -I ftp://localhost/no_such_file; echo $?
curl: (19) Given file does not exist
19

Alternativ perl: 'lwp-request -m HEAD' zum Beispiel ;)

HTH,
-dnh

--
Kiss me twice. I'm schizophrenic.
-- from the BSD fortune file

0 new messages