Prüfen ob Datei im Internet vorhanden ...

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
truehl
Beiträge: 18
Registriert: 04.12.2010 12:29:36

Prüfen ob Datei im Internet vorhanden ...

Beitrag von truehl » 10.12.2010 22:18:25

Hallo,
ich suche nach einer Möglichkeit, in einem Script zu überprüfen, ob eine Datei auf einer Website vorhanden ist. Wenn dieses der Fall ist soll sie heruntergeladen werden. Wenn nicht, soll eine Meldung erfolgen.

Hat jemand eine Idee, wie man das macht?

z.B.: Datei im Internet: http://squeezeplug.de/test.tar.gz

if [Datei gibt es]; then
wget http://squeezeplug.de/test.tar.gz
Befehl 1
Befehl 2
...
else
echo "Datei nicht vorhanden"
fi

vielen Dank,
Gruß
Thomas

Liffi
Beiträge: 2345
Registriert: 02.10.2004 01:33:05

Re: Prüfen ob Datei im Internet vorhanden ...

Beitrag von Liffi » 10.12.2010 22:27:04

truehl hat geschrieben: ich suche nach einer Möglichkeit, in einem Script zu überprüfen, ob eine Datei auf einer Website vorhanden ist. Wenn dieses der Fall ist soll sie heruntergeladen werden. Wenn nicht, soll eine Meldung erfolgen.
Hat jemand eine Idee, wie man das macht?
wget $DATEI liefert doch zurueck ob es geht oder nicht.
Du kannst also einfach mit dem Rueckgabewert von wget arbeiten.

truehl
Beiträge: 18
Registriert: 04.12.2010 12:29:36

Re: Prüfen ob Datei im Internet vorhanden ...

Beitrag von truehl » 10.12.2010 22:50:14

Genau das ist mein Problem. was ist hier der Rückgabewert?

root@squeezeplug:~# wget http://squeezeplug.de/wp-content/upload ... .31.tar.gz
--2010-12-10 22:48:46-- http://squeezeplug.de/wp-content/upload ... .31.tar.gz
Resolving squeezeplug.de... 88.198.8.66
Connecting to squeezeplug.de|88.198.8.66|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2010-12-10 22:48:46 ERROR 404: Not Found.

Vielen Dank,
Gruß

Thomas

Benutzeravatar
Meillo
Moderator
Beiträge: 9247
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Prüfen ob Datei im Internet vorhanden ...

Beitrag von Meillo » 10.12.2010 23:01:45

Code: Alles auswählen

echo $?
Use ed once in a while!

truehl
Beiträge: 18
Registriert: 04.12.2010 12:29:36

Re: Prüfen ob Datei im Internet vorhanden ...

Beitrag von truehl » 11.12.2010 00:38:34

Wenn die Datei nicht da ist bekomme ich eine 4 kann das sein?

Gibt es auch eine Möglichkeit, die Existenz einer bestimmten Datei im Internet lediglich zu prüfen? Je nach Rückgabewert könnte ich dann Aktionen ausführen?!

Benutzeravatar
Roesti
Beiträge: 13
Registriert: 19.11.2009 13:04:34
Wohnort: Freiberg

Re: Prüfen ob Datei im Internet vorhanden ...

Beitrag von Roesti » 11.12.2010 01:19:28

Versuchs mal mit:

Code: Alles auswählen

#!/bin/sh
FILE=http://squeezeplug.de/test.tar.gz

if [ -e "$FILE" ]
  then wget http://squeezeplug.de/test.tar.gz
    else echo "File not found"
fi
exit
Roesti

Benutzeravatar
catdog2
Beiträge: 5352
Registriert: 24.06.2006 16:50:03
Lizenz eigener Beiträge: MIT Lizenz

Re: Prüfen ob Datei im Internet vorhanden ...

Beitrag von catdog2 » 11.12.2010 11:27:45

Wenn die Datei nicht da ist bekomme ich eine 4 kann das sein?
Um mal die manpage zu zitieren:

Code: Alles auswählen

       2.12 Exit Status

       Wget may return one of several error codes if it encounters problems.

       0 No problems occurred.

       1 Generic error code.

       2 Parse error--for instance, when parsing command-line options, the `.wgetrc' or `.netrc'...

       3 File I/O error.

       4 Network failure.

       5 SSL verification failure.

       6 Username/password authentication failure.

       7 Protocol errors.

       8 Server issued an error response.

       With the exceptions of 0 and 1, the lower-numbered exit codes take precedence over higher-numbered ones, when
       multiple types of errors are encountered.

       In versions of Wget prior to 1.12, Wget's exit status tended to be unhelpful and inconsistent. Recursive downloads
       would virtually always return 0 (success), regardless of any issues encountered, and non-recursive fetches only
       returned the status corresponding to the most recently-attempted download.
Unix is user-friendly; it's just picky about who its friends are.

Benutzeravatar
Meillo
Moderator
Beiträge: 9247
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Prüfen ob Datei im Internet vorhanden ...

Beitrag von Meillo » 13.12.2010 14:55:42

Roesti hat geschrieben:Versuchs mal mit:

Code: Alles auswählen

#!/bin/sh
FILE=http://squeezeplug.de/test.tar.gz

if [ -e "$FILE" ]

ROFL! YMMD! :D


truehl hat geschrieben: Gibt es auch eine Möglichkeit, die Existenz einer bestimmten Datei im Internet lediglich zu prüfen? Je nach Rückgabewert könnte ich dann Aktionen ausführen?!
Du kannst die Existenz einer Datei ueber HTTP (das meinst du doch mit ``im Internet'') zu pruefen musst du sie entweder ganz runterladen (HTTP GET) oder zumindest ihre Metainformation runterladen (HTTP HEAD). Der erste Fall ist einfacher, da den fast jedes Programm unterstuetzt (wget, w3m, etc). Der zweite Fall ist eher das was du suchst und den kannst du so erreichen:

Code: Alles auswählen

wget --spider --force-html http://example.org/foo/bar.html
$? sagt dann ob unter der URL etwas verfuegbar ist oder nicht.


Oder liegt dein Problem in der weiteren Umsetzung des Problems mit der Shell? Dann sag das dazu. Hier nehmen wir meist grundlegende Shellkenntnisse an. Wir haben es gerne wenn wir sehen dass der Fragende sich selbst auch bemueht und Zeit zur Recherche und zum Ausprobieren aufwendet. Falls dies aber ueber deine Moeglichkeiten geht dann kannst du uns auch (mit Begruendung) bitten, dass wir dir was komplett Fertiges liefern. Da wir in diesem Forum auch nur nebenbei in unserer Freizeit aktiv sind wirst du verstehen dass wir nicht fuer jedes Problem Zeit investieren koennen um fertige Loesungen auf dem Tablett zu servieren. Man muss eben gut argumentieren, freundlich sein, und zeigen dass man selbst auch Zeit investiert wenn man wuenscht dass andere auch Zeit fuer einen investieren.

In diesem Sinne: Ich kann dir auch fertigen Code liefern wenn du mich ueberzeugst dass ich dafuer Zeit opfern will (und wenn ich genauer weiss was du willst). Ansonsten kannst du mit obigem Codeschnipsel und etwas Shellprogrammierkenntnissen (siehe auch andere Codeschnipsel in diesem Thead) den Rest auch selbst schaffen.
Use ed once in a while!

Antworten