Carsten Roters: ftp-server durchsuchen

Hallo!

Leider befürchte ich, dass mein Vorhaben etwas umfangreich ist.

Also im ersten Schritt gibt es ein html-Formular, mit dem User im lokalen Netz ihre (lokalen) ftp-Server eintragen können. Diese werden per php in die mysql-Datenbank gespeichert.

Nun soll ein Script im Hintergrund laufen, das die in der mysql-Datenbank eingetragen ftp-server in regelmäßigen Abständen scannt. Das soll so aussehen, das es sich in den ftp-server einloggt, dort sämtliche Verzeichnisse scannt und die Dateiennamen, den jeweiligen Ort und die Größe zurückgibt.
Das ganze soll dann am besten wieder irgendwie in die mysql-Datenbank eingetragen werden, also Dateinamen, Ort, Server und Größe, damit man per Formular (html bzw. php) dann nach Dateien suchen kann und angezeigt bekommt, auf welchem Server die in welchem Verzeichnis liegen und wie groß sie sind.

Also der jeweilige php/html Teil ist weniger das Problem. Mir mangelt es an Erfahrung (und im Moment Zeit) den entsprechenden cgi-Teil zu coden.

Wer kann mir da ein Grund-Script geben, bei dem am besten möglichst viel dokumentiert ist?

Wäre wirklich sehr dankbar!

Viele Grüße

Carsten

  1. Hallo Carsten,

    Leider befürchte ich, dass mein Vorhaben etwas umfangreich ist.

    Das befürchte ich auch, nachdem ich dein Posting kurz durchgelesen habe... ;-)

    Also im ersten Schritt gibt es ein html-Formular, mit dem User im lokalen Netz ihre (lokalen) ftp-Server eintragen können. Diese werden per php in die mysql-Datenbank gespeichert.

    Dieser Schritt ist doch schon mal schön einfach.

    Nun soll ein Script im Hintergrund laufen, das die in der mysql-Datenbank eingetragen ftp-server in regelmäßigen Abständen scannt. Das soll so aussehen, das es sich in den ftp-server einloggt, dort sämtliche Verzeichnisse scannt und die Dateiennamen, den jeweiligen Ort und die Größe zurückgibt.

    Schwierig. Da du dies in bestimmten Zeitabständen haben willst, rate ich dir hier zum Einsatz von Cronjobs.
    Und man sollte sich darauf einstellen, dass das Scannen eines kompletten (!!!) FTP-Servers unter Umständen sehr lange dauern kann! Eventuell sollte man hier einen Timeout nach ein paar Minuten setzen.

    Das ganze soll dann am besten wieder irgendwie in die mysql-Datenbank eingetragen werden, also Dateinamen, Ort, Server und Größe, damit man per Formular (html bzw. php) dann nach Dateien suchen kann und angezeigt bekommt, auf welchem Server die in welchem Verzeichnis liegen und wie groß sie sind.

    Mit MySQL ist so etwas bestimmt möglich, aber ich rate hier in diesem Falle wegen der vielen Unterstrukturen (Unterverzeichnis im Unterverzeichnis im Unterverzeichnis...) zu XML, man möge mich berichtigen falls es mit MySQL einfacher gehen sollte.

    Also der jeweilige php/html Teil ist weniger das Problem. Mir mangelt es an Erfahrung (und im Moment Zeit) den entsprechenden cgi-Teil zu coden.

    Viele hier hätten bestimmt die Erfahrung dazu, allerdings mangelt es auch uns an Zeit den enstprechenden CGI-Teil zu coden.
    Das was du vorhast ist nämlich in der Tat (ein wenig) aufwendiger als einfach mal so ein kleines CGI-Projekt zu coden.
    Da du aber genau weißt was du vorhast sollte es kein Problem sein, sich den anderen Teil dazuzuerlernen. Den Datenbank-Teil würde ich persönlich nun komplett in XML gestalten, somit hast du alle Datenbanken (FTP-Server-Adressen und Serverinhalte) in XML.
    Das Auslesen der Inhalte auf den FTP-Servern lässt sich bestimmt mit der entsprechenden PEAR-Klasse erledigen, falls du PHP als Skriptsprache verwendest: http://pear.php.net/manual/en/package.networking.net-ftp.php.

    Das Einarbeiten in diese ganzen Sachen kannst du dir ersparen, wenn du hier jemanden findest der dir das gegen Geld programmieren würde. Ich bin mir sicher, dass du hier am Besten auf kompetente Fachleute triffst, die etwas Geld dazuverdienen wollen.
    Wenn ich die Zeit dazu hätte dann hätte ich dir jetzt schon ein Angebot gemacht, aber ich bin derzeit selbst mit einem Haufen anderer Projekte (Auto-Vermiet-Terminal, Open Music Registry etc.) überlastet.

    Wer kann mir da ein Grund-Script geben, bei dem am besten möglichst viel dokumentiert ist?

    Ein Grund-Script wirst du in diese Richtung weniger finden, denn dein Anliegen ist sehr spezifisch. Mit den oben genannten Vorgehensweisen solltest du aber Erfolg haben.

    So, Zeit für den wohlverdienten Schlaf! :-)
    Nacht.

    Marc Reichelt || http://www.marcreichelt.de/

    --
    Linux is like a wigwam - no windows, no gates and an Apache inside!
    Selfcode: ie:{ fl:| br:> va:} ls:< fo:} rl:( n4:( ss:) de:> js:| ch:? sh:| mo:) zu:)
    http://emmanuel.dammerer.at/selfcode.html
    1. Hi,

      Leider befürchte ich, dass mein Vorhaben etwas umfangreich ist.

      Das befürchte ich auch, nachdem ich dein Posting kurz durchgelesen habe... ;-)

      sehe ich nicht so. Http (und damit html-Dateien) ist viel komplexer.
      Bei Ftp ist nur das Protokoll etwas gewöhnungsbedürftig, aber Du hast nicht so viele Möglichkeiten, die Schwierigkeiten machen können.
      Im Prinzip geht man in folgenden Schritten vor:

      • Verbindung zu Host aufbauen
      • (Root-) Verzeichnis lesen
      • alle Dateien auslesen (, die einer bestimmte Größe bzw. Deinen Kriterien entsprechen) und Unterverzeichnisse in Array packen (push)
      • nächstes Verzeichnis aus Array holen (pop, bis keines mehr da)

      ...usw.

      Das ganze soll dann am besten wieder irgendwie in die mysql-Datenbank eingetragen werden, also Dateinamen, Ort, Server und Größe, damit man per Formular (html bzw. php) dann nach Dateien suchen kann und angezeigt bekommt, auf welchem Server die in welchem Verzeichnis liegen und wie groß sie sind.

      Mit MySQL ist so etwas bestimmt möglich, aber ich rate hier in diesem Falle wegen der vielen Unterstrukturen (Unterverzeichnis im Unterverzeichnis im Unterverzeichnis...) zu XML, man möge mich berichtigen falls es mit MySQL einfacher gehen sollte.

      Wenn Du eine Suchmaschine bauen willst, was ja die Anforderung war, ist eine Datenbank natürlich hilfreich.

      Also der jeweilige php/html Teil ist weniger das Problem. Mir mangelt es an Erfahrung (und im Moment Zeit) den entsprechenden cgi-Teil zu coden.

      Dann nutze eine fertige Maschine: http://www.w3sitesearch.de/index.php4?page=examples#ftp

      Viele Grüße,
      Reiner

      1. Dann nutze eine fertige Maschine: http://www.w3sitesearch.de/index.php4?page=examples#ftp

        Das ist leider nicht möglich. Es geht ja darum, dass ganze offline zu machen.
        Also erst die bekannten ftp-server im lokalen Netz scannen und die gewonnen Daten in einer Datenbank speichern. Dann soll man per Formular auf dem Intranetserver (im lokalen Netz) in der Datenbank nach Dateien suchen können.

        Sicher besteht die Gefahr, dass die Datei nicht mehr da ist, wenn z.B. das scannen eine halbe Stunde her ist. Aber bei entsprechend vielen und großen ftp-Servern dauert das direkte durchsuchen VIEL zu lange.

        Viele Grüße

        Carsten

        1. »» »» Dann nutze eine fertige Maschine: http://www.w3sitesearch.de/index.php4?page=examples#ftp

          Das ist leider nicht möglich. Es geht ja darum, dass ganze offline zu machen.
          Also erst die bekannten ftp-server im lokalen Netz scannen und die gewonnen Daten in einer Datenbank speichern. Dann soll man per Formular auf dem Intranetserver (im lokalen Netz) in der Datenbank nach Dateien suchen können.

          Es gibt ja auch eine Server-Version.

          Gruß
          Reiner

    2. Nun soll ein Script im Hintergrund laufen, das die in der mysql-Datenbank eingetragen ftp-server in regelmäßigen Abständen scannt. Das soll so aussehen, das es sich in den ftp-server einloggt, dort sämtliche Verzeichnisse scannt und die Dateiennamen, den jeweiligen Ort und die Größe zurückgibt.

      Schwierig. Da du dies in bestimmten Zeitabständen haben willst, rate ich dir hier zum Einsatz von Cronjobs.

      Ja, das regelmäßige Scannen ist nicht problematisch.

      Und man sollte sich darauf einstellen, dass das Scannen eines kompletten (!!!) FTP-Servers unter Umständen sehr lange dauern kann! Eventuell sollte man hier einen Timeout nach ein paar Minuten setzen.

      Kann man machen, ist aber auch nicht das Problem. Das "einzige" Problem ist das cgi-cript, welches die ftp-server durchsucht und die gewonnen Daten in die mysql Datenbank abspeichert.

      Das ganze soll dann am besten wieder irgendwie in die mysql-Datenbank eingetragen werden, also Dateinamen, Ort, Server und Größe, damit man per Formular (html bzw. php) dann nach Dateien suchen kann und angezeigt bekommt, auf welchem Server die in welchem Verzeichnis liegen und wie groß sie sind.

      Mit MySQL ist so etwas bestimmt möglich, aber ich rate hier in diesem Falle wegen der vielen Unterstrukturen (Unterverzeichnis im Unterverzeichnis im Unterverzeichnis...) zu XML, man möge mich berichtigen falls es mit MySQL einfacher gehen sollte.

      Also xml benutzen wir überhaupt nicht. Da ist die Einarbeitung doch sehr aufwendig und wir würden lieber bei dem vorhandenen bleiben.

      Viele Grüße

      Carsten