1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

FTP-Inhaltsverzeichnis per Kommandozeile

Discussion in 'Software allgemein' started by Eric March, Jul 30, 2012.

Thread Status:
Not open for further replies.
  1. Eric March

    Eric March CD-R 80

    Moin!

    ›Meinen‹ Server per FTP-Client oder Browser anzusprechen um eine Übersicht zu erhalten ist Peanuts.

    Was ich brauche ist ein Kommandozeilentool das nicht mal mehr zu tun bräuchte als dieser tumbe DOS-Befehl:
    DIR /B > C:\INHALT.DAT

    Die Datei kann ich aufmachen und durchforsten; das wonach ich suche fände ich leicht. Ein DIR /B | FIND /V "." > C:\INHALT.DAT weil mich nur Ordner interessieren wäre schon fast Luxus (DIR ????nn?? /B | FIND /V "." > C:\INHALT.DAT - halleluja; nn sind 2 bestimmte immer gleiche Zeichen).

    WGET scheint das auch mit --SPIDER nicht auf die Reihe zu bekommen. Welches Prog kann mir so eine triviale Auskunft geben?

    Eric March
     
  2. Eric March

    Eric March CD-R 80

    :eek:
    Keiner da der hierzu was sagen kann? Nicht mal ein „Geht nicht!“ wenn dem so wäre?
    E.M.
     
  3. kazhar

    kazhar Viertel Gigabyte

    nur mal schnell ausprobiert...
    Code:
    @echo off
    del %temp%\ftpdir.tmp
    
    wget ftp://192.168.70.12 --ftp-user=Test --ftp-password=test --recursive --spider --output-file=%temp%\ftpdir1.tmp
    find /N "           =>" %temp%\ftpdir1.tmp > %temp%\ftpdir2.tmp
    FOR /F "tokens=2 delims=`'" %%i in (%temp%\ftpdir2.tmp) do @echo %%i >> %temp%\ftpdir.tmp
    
    del %temp%\ftpdir1.tmp
    del %temp%\ftpdir2.tmp
    type %temp%\ftpdir.tmp
    
     
  4. Eric March

    Eric March CD-R 80

    Das muss ich mal in aller Ruhe duchpuzzeln.

    Ich brauch die Kommandozeile in dem Sinne, dass ich eine Rückgabe bekomme die ich leicht auswerten kann. Dass ich eine Datei (d.h. zwei) als Container brauche geht mir gegen die Ehre :heilig:; dass ich die eine Datei noch mit For /F zerschnipseln muss übersteigt mein Verständnis des Begriffe ›Rückgabe einer Anfrage‹… ;)
    Mir war ein WGET-Code in die Hände gefallen, aber da kam eine ganze Ordnerstruktur als solche zurück, das half nichts.

    Ich melde mich beizeiten.

    Eric March
     
  5. kazhar

    kazhar Viertel Gigabyte

    zwischen ergebnisse nach temp zu verlagern ist nichts ehrenrühriges. dafür gibts den ordner doch. musst halt nacher aufräumen ;)

    Code:
    @echo off
    
    :: zugangsdaten
    set Server=192.168.70.12
    set User=Test
    set Pass=test
    
    :: wechseln ins temp verzeichnis
    pushd %temp%
    del ftpdir.tmp >2 nil
    
    :: ordner/dateien des ftp servers auslesen und die ausgabe nach "ftpdir1.tmp" speichern
    wget ftp://%Server% --ftp-user=%User% --ftp-password=%Pass% --recursive --spider --output-file=ftpdir1.tmp
    :: nur die zeilen heraussuchen, die übertragene dateien betreffen udn das ergebnis nach "ftpdir2.tmp" speichern
    find /N "           =>" ftpdir1.tmp > ftpdir2.tmp
    :: vor und nachspann abtrennen (alles nach dem ` und vor dem ' ausgeben) und nach "ftpdir.tmp" speichern
    FOR /F "tokens=2 delims=`'" %%i in (ftpdir2.tmp) do @echo %%i >> ftpdir.tmp
    
    :: hilfsdateien löschen
    del ftpdir1.tmp
    del ftpdir2.tmp
    :: "gespiderte" ordnerstruktur entfernen
    echo j|rd /S %server% > nil
    :: ergebnis ausgeben (oder was anderes damit machen: -- your code goes here ---)
    type ftpdir.tmp
    :: zum anfangsordner zurückgehen
    popd
     
  6. Eric March

    Eric March CD-R 80

    Nein - so klappt es für die Praxis nicht.

    WGET baut eine (leere) Ordnerstruktur auf, das ist per se lästig.
    Und allein die oberste Ebene (--level) einer stattlichen Kollektion von Ordnern mit jeweils auch einer Menge Files darin abzugrasen nur um die Protokollinformation des Ordnernamens zu erhalten dauert viel zu lange, jenseits von Gut und Böse.

    Ich bräuchte eine andere Lösung. Gerne auch ohne unbedingt WGET. (In mein Gehirn geht nicht rein, dass ich ausschließlich Dateien zurückgemeldet bekomme; vermutlich weil immer nur ein File geschrieben werden kann statt eines kompletten Ordners, was das Leben erleichterte.)

    Eric March
     
  7. kazhar

    kazhar Viertel Gigabyte

    gehts eigentlich "nur" um eine standard ftp verbindung oder ist da verschlüsselung dabei (sftp oder scp)?

    bei unverschlüsseltem ftp ließe sich die ordnerstruktor zur not und ohne großen aufwand per script/programm auslesen.
     
  8. Eric March

    Eric March CD-R 80

    Wenn der Provider nicht lügt ist es völlig normales FTP :D

    Vielen Dank für das Aufschlüsseln des Codes; davon kann mancher Mitleser was lernen. (Ich hatte schon mitbekommen wie der Hase hoppelt.) :spitze:

    Das Ganze, hätte ich vielleicht erwähnen soll, läuft auf einem IIS 2003. Ich würde mit dem Scherz spielen per Remotkontrolle sogar DIR /B in dem bewussten Ordner auszulösen. Das File in dem der Output landet runterzuladen und auszuwerten wäre ein Klacks. Wenns sein muss 1x stündlich per Scheduler (TaskPlaner) aufgerufen und die Auskunft die ich haben will sollte ausreichend gut sein.
    Aber eigentlich will ich das ja in Echtzeit haben :)

    Eric March
     
  9. kalweit

    kalweit Hüter der Glaskugel

    Man könnte natürlich auch mit einem sog. "Netdrive Client" (z.B. http://www.netdrive.net/features.html) das FTP-Verzeichnis als Laufwerk in Windows mounten und dann mit den ganz normalen Konsolenbefehlen darauf zu greifen.

    :schlafen:
     
  10. Eric March

    Eric March CD-R 80

    Jaaaaa - aber das hätte den gewissen Nachteil, dass ich mein »Script« (hüst-Excel…) nicht auf jeder Workstation starten könnte ohne dort so was zu etablieren. Und die Bösen Blicke wenn ich das versuche will ich nicht riskieren (*).
    (Ich wollte nicht unbedingt ausbreiten was da alles am Werkeln ist; bitte die Informationsknappheit daher zu entschuldigen. Das Wesentliche habe ich notiert.)

    Wenn FTP (also mehr das FT-Protokoll) es nicht logisch schafft etwas wie (bescheiden) DIR /B abzubilden bin ich gekniffen und muss wohl doch die angedachte Hintertür mit dem Scheduler ›ziehen‹. schade wär's schon.

    Eric March


    (*) Vorsicht ist des bessere Teil der Tapferkeit :rolleyes:
     
  11. kazhar

    kazhar Viertel Gigabyte

    ftp kann ein directory listing in der folgenden form liefern
    Code:
    -rw-r--r-- 1 ftp ftp            402 Mar 02  2012 desktop.ini
    drwxr-xr-x 1 ftp ftp              0 Mar 02  2012 Eigene Bilder
    drwxr-xr-x 1 ftp ftp              0 Mar 02  2012 Eigene Musik
    drwxr-xr-x 1 ftp ftp              0 Mar 02  2012 Eigene Videos
    drwxr-xr-x 1 ftp ftp              0 Mar 10  2012 Test
    drwxr-xr-x 1 ftp ftp              0 Mar 05  2012 Visual Studio 11
    drwxr-xr-x 1 ftp ftp              0 Mar 05  2012 WPA Files
    
    das müsste man halt alle x sekunden machen. wenns nicht rekursiv zu sein braucht geht das auch recht flott...
     
Thread Status:
Not open for further replies.

Share This Page