Wget Syntax

Alt 24.01.2013, 13:27   # 1
Alexander B.
 
Registriert seit: 24.01.2013
Beiträge: 4
Hallo Comunnity,

ich versuch mit dem Programm wget ein Verzeichnis von einem ftp Server herunter zu laden, aber irgendwas mach ich falsch.
Über Filezilla klappt das alles wunderbar, nur ich möchte das über eine Batch-Datei automatisieren.
Kennt sich jmd vielleicht jmd mit der Syntax aus, oder könnte mir
mit der wgetrc Datei aus.
Ich schreib hier mal ein paar fiktive Daten.

IPAdresse: vvv.xxx.yyy.zzz
Port: 21
Verzeichnis: /log/
Username: default
Password:
Lokales Verzeichnis: D:\Backup (hier soll das Verzeichnis gespeichert werden)

Vielen Dank schon mal im Vorraus

Alexander B.
  Mit Zitat antworten
Alt 24.01.2013, 13:27 # --
netzwelt.de
 
Benutzerbild von netzwelt.de
 
 
 
   
Alt 24.01.2013, 15:01   # 2
grunzer
Hausmeister im Virtuellen
 
Benutzerbild von grunzer
 
Registriert seit: 28.12.2006
Beiträge: 4.262
Hi,

Ich kenne die Windowsversion von wget nicht, aber unter Linux läuft das ganz einfach, wenn Du wget aus dem Verzeichnis in das Du die Daten kopieren willst startest:
Code:
wget ftp://BENUTZERNAME:PASSWORT@vvv.xxx.yyy.zzz/log/*
Wenn dort eine Verzeichnisstruktur enthalten ist, dann sollte man noch den Schalter -r verwenden:
Code:
wget -r ftp://BENUTZERNAME:PASSWORT@vvv.xxx.yyy.zzz/log/*
Im Batchfile wirst Du vermutlich erst ein "cd D:\Backup" machen müssen um dann von dort aus wget aufzurufen. Wenn es nicht in einem Verzeichnis liegt, das in der Path-Variablen hinterlegt ist, dann wirst Du vermutlich den vollständigen Pfad zum wget angeben müssen (wo Du es auch immer liegen hast?).

Wobei es auch noch einen Schalter -P gibt, hinter dem man das Ausgabeverzeichnis angeben kann. Hab ich noch nicht ausprobiert, sollte aber wohl funktionieren

Grüße derweil
Grunzer
  Mit Zitat antworten
Alt 25.01.2013, 08:13   # 3
Alexander B.
Threadstarter
 
Registriert seit: 24.01.2013
Beiträge: 4
Hallo grunzer,

vielen Dank für die schnelle Antwort, das hat mir schon geholfen.
Aber ich bekomme immer noch eine Fehlermeldung.
Ich denke, dass es daran liegt, dass der server kein "normaler" Rechner ist sondern eine Controller für einen Roboter.

Wenn ich das Verzeichnis "/log/ angebe kommt die Fehlermeldung:
No such directory 'log'
unlink: no such file or directory

Wenn ich mich über Filezilla mit dem Controller verbinde ohne in den Advanced Einstellungen das "Default local directory" anzugeben bekomme ich auch eine Fehlermeldung "Could not retrieve directory listing"
Gebe ich dort aber das Verzeichnis "/log/" an funktioniert es.

mfG Alexander B.

---------- Doppelpost zusammengeführt ----------

Edit:
*es sollte "default remote Directory" heissen, bei den Filzilla Einstellungen
  Mit Zitat antworten
Alt 25.01.2013, 08:56   # 4
grunzer
Hausmeister im Virtuellen
 
Benutzerbild von grunzer
 
Registriert seit: 28.12.2006
Beiträge: 4.262
Zitat:
der server kein "normaler" Rechner ist sondern eine Controller für einen Roboter.
Hmmm...
Hast Du das "/*" hinter dem Befehl auch angeführt? Das ist bei der Angabe nötig um alle Dateien aus dem Verzeichnis zu laden!

Wenn Du das gemacht hast, dann müßte man jetzt wissen wie in dem Ding der FTP-Dienst implementiert ist. Also wo liegt das root vom ftp, welche Berechtigungen sind auf dem Ding für welche Verzeichnisse vergeben, liegt das "log" Verzeichnis unterhalb des ftp-root oder nur ein Alias usw.
Eigentlich sollten meines Erachtens solche Informationen dem Roboter beiliegen oder zumindest irgendwo abrufbar sein.

Was Du mal ausprobieren könntest wäre, daß Du eine einzelne Datei direkt herunterlädst. Vielleicht hat die Kennung einfach nicht das Recht "list directory", die man meiner Meinung nach braucht um es anzuzeigen.
Also in etwa so:
Code:
wget ftp://BENUTZERNAME:PASSWORT@vvv.xxx.yyy.zzz/log/DATEINAME
Klappt das?

Grüße Grunzer
  Mit Zitat antworten
Alt 25.01.2013, 09:10   # 5
Alexander B.
Threadstarter
 
Registriert seit: 24.01.2013
Beiträge: 4
Also bei beiden befehlen kommt der oben genannte fehler

wget -r ftp://default:@vvv.xxx.yyy.zzz/log/*

wget -r ftp://default:@vvv.xxx.yyy.zzz/log/errors.log

Mich macht das nur stutzig, dass es mit Filezilla ja funktionier, mit den selben Logindaten, usw.
Filezilla gibt "CWD /log/" als comanndo an und dann ist er in dem Verzeichnis

---------- Doppelpost zusammengeführt ----------

Ich hab es auch mit höheren logindaten versuch, funktioniert auch ned
  Mit Zitat antworten
Alt 25.01.2013, 09:43   # 6
Arthur Spooner
netzweltler
 
Benutzerbild von Arthur Spooner
 
Registriert seit: 10.05.2006
Beiträge: 4.210
Hallo zusammen,

vermutlich geht das nicht, weil das Verzeichnis von Außen nicht erreichbar ist. Es liegt wohl auf der gleichen Ebene wie /html bzw. /httpdoc (/log ist so ein typischer Kandidat).

Mit wget bekommt man nur Verzeichnisse/Dateien gegriffen, die auch über den Browser abrufbar sind.

Um sich auf dem FTP selbst bewegen zu können, musst du eine richtige FTP-Verbindung aufbauen.

In PHP sieht das in etwa so aus:
PHP-Code:
$oConnID ftp_connect($sFTPServer);
$bLogin  ftp_login($oConnID$sFTPUser$sFTPPassword);

if ((!
$oConnID) || (!$bLogin))
        {
            die(
'Could not connect to FTP-Host');
        }

ftp_chdir($oConnID$sRemotePath); // Verzeichnis wechseln
ftp_get($oConnID$sLocalSaveDir '/' $sLocalFileName$sRemotePath$sRemoteFileNameFTP_BINARY0)) // Datein vom Remote nach Local ziehen
ftp_close($oConnID); // hiermit wird die Verbindung wieder geschlossen 
Grüße
  Mit Zitat antworten
Alt 25.01.2013, 10:41   # 7
grunzer
Hausmeister im Virtuellen
 
Benutzerbild von grunzer
 
Registriert seit: 28.12.2006
Beiträge: 4.262
Könnte sein, daß Du recht hast Arthur, aber ich frage mich warum es dann mit Filezilla geht.

Ich habe gerade bei mir auf meinem ftp ausprobiert mittels wget direkt in ein Unterverzeichnis zu springen und dort was runter zu ziehen und das hat wunderbar funktioniert.

Aber ich schätze auch, daß das /log nicht unterhalb vom ftp-root liegt, sondern irgendwo parallel und wohl ein Alias ist. Aber selbst dann frage ich mich nach dem Unterschied zu dem ftp-client

Es gibt aber noch reichlich Schalter in wget für die ftp Nutzung mit denen man noch etwas experimentieren könnte (zB: passive Nutzung, Symlinksauflösung ):
GNU Wget 1.13.4 Manual

Allerdings würde ich sowas auch eher mit einem Kommandozeilen FTP-Client machen.
Unter Windows läuft ftp so:
Zitat:
C:\>ftp -?

Überträgt Dateien von und zu einem Computer auf dem ein FTP-Serverdienst ausgeführt wird
(auch Daemon genannt). FTP kann interaktiv verwendet werden.

FTP [-v] [-d] [-i] [-n] [-g] [-s: Dateiname] [-a] [-A] [-x:Sendepuffer] [-r:Empfangpuffer] [-b:Asynchronpuffer] [-w:Fenstergröße] [Host]

-v Unterdrückt das Anzeigen von Remoteserverantworten.
-n Unterdrückt automatische Anmeldung bei erster Verbindung.
-i Schaltet die interaktive Aufforderung während
der Übertragung von mehreren Dateien aus.
-d Aktiviert Debugging.
-g Deaktiviert Dateinamenglobbing (siehe Befehl GLOB).
-s: Dateiname Legt eine Textdatei fest, die FTP-Befehle enthält. Befehle
werden automatisch nach dem Start von FTP ausgeführt.
-a Verwendet beliebige lokale Schnittstelle bei der
Herstellung der Datenverbindung.
-A Als anonym anmelden.
-x: Sendepuffer Überschreibt die SO_SNDBUF-Standardgröße (8192).
-r:Empfangpuffer Überschreibt die SO_RCVBUF-Standardgröße (8192).
-b:Asynchronpuffer Überschreibt den Standard Asynchronpuffer (3)
-w:Fenstergröße Überschreibt die Standardübertragungsgröße (65535).
Host Legt den Hostnamen bzw. die IP-Adresse des Remotehosts
fest, mit dem die Verbindung hergestellt wird.

Hinweise:
Die Befehle - mget und mput erfordern y/n/q für yes/no/quit.
- Verwenden Sie STRG+C, um Befehle abzubrechen.
Und wenn man die Verbindung via Batch aufbaut, dann kann man mit den üblichen ftpBefehlen eigentlich auch alles machen was Du mit wget versuchst:
Zitat:
C:\>ftp
ftp> help
Befehle können abgekürzt werden. Befehle sind:

! delete literal prompt send
? debug ls put status
append dir mdelete pwd trace
ascii disconnect mdir quit type
bell get mget quote user
binary glob mkdir recv verbose
bye hash mls remotehelp
cd help mput rename
close lcd open rmdir
ftp> quit

C:\>
Sag uns bitte bescheid, falls Du es hinbekommen hast
Grüße Grunzer
  Mit Zitat antworten
Alt 25.01.2013, 11:22   # 8
Alexander B.
Threadstarter
 
Registriert seit: 24.01.2013
Beiträge: 4
Also eine enzelne Datei kann ich jetzt runterladen

wget -v -nd ftp://default:@vvv.xxx.yyy.zzz/%%2Flog/errors.log

Ich möchte aber alle Dateien und Unterverzeichnisse sichern.
Komischerweise funktioniert es nicht wenn ich es so versuche.

wget -v -nd -r ftp://default:@vvv.xxx.yyy.zzz/%%2Flog/*

---------- Doppelpost zusammengeführt ----------

Wenn ich in dem Komandozeilen Ftp-Client in dem Verzeichnis /log/ ls eingebe
zeigt er mir die Dateien und unten erscheint eine Warnung, dass er Leerzeichen hat.
Und das ist pro Eintrag (Datei oder Verzeichnis) ein Leerzeichen.
Vielleicht hat das was mit der Zeilenendung oder Zeichensatz zu tun?
  Mit Zitat antworten

Alt 23.07.2014, 16:09 # --
News Flash
 
Benutzerbild von News Flash
 
 
 

Das könnte Dich auch noch interessieren:

Nicht fündig geworden? Dann ohne Anmeldung in unserem Gast-Forum nachfragen.

   
Alt 23.07.2014, 16:09 # --
netzwelt.de
 
Benutzerbild von netzwelt.de
 
 
 
   
Antwort
Themen-Optionen



Alle Zeitangaben in WEZ +2. Es ist jetzt 16:09 Uhr.