Christian Heiss: Verzeichnis von anderem Server auslesen

Hallo,

ist es möglich via Perl ein Verzeichnis auf einem share von einem anderen Server auszulesen?

Alle meine bisherigen Versuche scheiterten.

Mein script:
#! /usr/bin/perl -w

use strict;
use CGI;

my ($query, $datei, $dateien, @dateien, $dateinamen, @dateinamen, $i);

$query = new CGI;

print $query->header();
print $query->start_html(-title=>'Intraweb-Server Test');

Verzeichnis öffnen

opendir(DIR, $query->param('ordner')) || die "Fehler beim Lesen des Verzeichnisses";

Dateien im Verzeichnis in ein Array einlesen

while ($datei = readdir(DIR)){
      @dateien = (@dateien,$datei);
}

Verzeichnis schliessen

closedir(DIR);

Erste zwei Elemente ("." und "..") aus Array entfernen

shift(@dateien);
shift(@dateien);

$dateien = @dateien;    # Länge des Datei-Arrays bestimmen
@dateinamen = @dateien; # Dateinamen zur Weiterverarbeitung speichern

for ($i = 0; $i < $dateien; $i++){      #Dateien ausgeben
    print '<a href="file:/'.$query->param('ordner').'/'.$dateien[$i].'">'.$dateinamen[$i].'</a><br>'; # Link anzeigen
}
print $query->end_html(); # HTML-Tags abschliessen

  1. Sorry, obige Beschreibung fehlt was!

    Mein script:
    #! /usr/bin/perl -w

    use strict;
    use CGI;

    my ($query, $datei, $dateien, @dateien, $dateinamen, @dateinamen, $i);

    $query = new CGI;

    print $query->header();
    print $query->start_html(-title=>'Intraweb-Server Test');

    Verzeichnis öffnen

    opendir(DIR, $query->param('ordner')) || die "Fehler beim Lesen des Verzeichnisses";

    Dateien im Verzeichnis in ein Array einlesen

    while ($datei = readdir(DIR)){
          @dateien = (@dateien,$datei);
    }

    Verzeichnis schliessen

    closedir(DIR);

    Erste zwei Elemente ("." und "..") aus Array entfernen

    shift(@dateien);
    shift(@dateien);

    $dateien = @dateien;    # Länge des Datei-Arrays bestimmen
    @dateinamen = @dateien; # Dateinamen zur Weiterverarbeitung speichern

    for ($i = 0; $i < $dateien; $i++){
        print '<a href="file:'.$query->param('ordner').'/'.$dateien[$i].'">'.$dateinamen[$i].'</a><br>'; # Link anzeigen
    }
    print $query->end_html();

    Das Script funktioniert insoweit, wenn die Files/Verzeichnis auf dem Server liegen, sobald aber auf einem Remote Rechner, geht nix mehr!

    Der Aufruf sollte/muss folgendermaßen erfolgen:
    http://<Webservername>/<scriptname>?ordner=//<remote-server>/<share-name>

    Wenn mir jemand helfen könnte wäre ich wirklich dankbar dafür!
    Ist das überhaupt möglich?

  2. Hi,

    ist es möglich via Perl ein Verzeichnis auf einem
    share von einem anderen Server auszulesen?

    was ist ein "share"?

    Die Antwort auf Deine Frage lautet genau dann "ja",
    wenn der andere Server Dir einen Zugang über ein
    geeignetes KOmmunikationsprotokoll erlaubt. Tut er das?

    opendir(DIR, $query->param('ordner')) || die "Fehler
    beim Lesen des Verzeichnisses";

    Dies würde erfordern, daß der "ordner" innerhalb
    Deines Dateisystems sichtbar ist. Ein geeignetes
    Protokoll wäre also beispielsweise ein NFS-Mount.

    Viele Grüße
          Michael

    1. Hallo,

      ist es möglich via Perl ein Verzeichnis auf einem
      share von einem anderen Server auszulesen?

      was ist ein "share"?

      ein share ist eine Freigabe.

      Die Antwort auf Deine Frage lautet genau dann "ja",
      wenn der andere Server Dir einen Zugang über ein
      geeignetes KOmmunikationsprotokoll erlaubt. Tut er das?

      Ja das tut er!

      opendir(DIR, $query->param('ordner')) || die "Fehler
      beim Lesen des Verzeichnisses";

      Dies würde erfordern, daß der "ordner" innerhalb
      Deines Dateisystems sichtbar ist. Ein geeignetes
      Protokoll wäre also beispielsweise ein NFS-Mount.

      Der Ordner ist sichtbar!

      Hatte noch vergessen zu schreiben:
      Der neue Server läuft auf einer Unix Kiste und ich will ein Verzeichnis auslesen, das auf einer Windows Kiste liegt.
      Bisher wurde das script auch auf einem Windowsserver ausgeführt. Da geht ja alles!

      Gruß

      Christian

      1. Hi Christian,

        Die Antwort auf Deine Frage lautet genau dann "ja",
        wenn der andere Server Dir einen Zugang über ein
        geeignetes KOmmunikationsprotokoll erlaubt. Tut er das?
        Ja das tut er!

        Und zwar welches? (Windows-SMB vielleicht?)

        Der neue Server läuft auf einer Unix Kiste und ich will ein
        Verzeichnis auslesen, das auf einer Windows Kiste liegt.
        Bisher wurde das script auch auf einem Windowsserver ausgeführt.
        Da geht ja alles!

        Aha. Und wie blendest Du nun dieses Verzeichnis über Betriebs-
        systemgrenzen hinweg ein? Verwendest Du Samba oder etwas Ähnliches?

        Erzähl doch einfach mal, was Du wirklich tust ... meine Kristallkugel
        ist bereits ziemlich abgenutzt.

        Gespannte Grüße
                  Michael