Sorgenkind Mech: Netzwerkfreigaben im lokalen netzwerk anzeigen

moin leutz

ich hab da ja mal ne brilliante idee, denk ich zumindest, aber darüber sol nich disskutiert werden ;)

ich han mich gerade gefragt, ob es möglich wäre, per php alle netzwerkfreigaben anzeigen zu lassen
die freigaben sollen einfach mal durch windowsrechner bereitstehen

dazu hab ich mir mal die datei-funktionen und die verzeichnisfunktionen von php angeschaut

zugriffe erfolgen aber immer duch ips bzw. das ftp-protokoll

weiß jemand ob bzw. wie das geht, dass man erstmal die freigaben findet?

PS nicht vergessen, alles lokales Netzwerk, nix internet oder so
grüße

  1. re

    aaaalso ich hab ja ma mittlerweile rausgefunden, dass ich dazu wahrscheinlich fsockopen nehmen muss .......... aber wie komm ich weiter? mit den normalen verzeichnis / dateifunktionen bekomm ich nu immer No such file or directory

    das ist beispielsweise ein versuch:

    <?php
    $fp = fsockopen("udp://127.0.0.1", 13);
    chdir($fp);
    if (!$fp)
    {
        echo "$errstr ($errno)<br>\n";
    }
    else
    {
    $test = fopen($fp, "r");
    var_dump($test); echo "<br>";
    $handle=opendir ($fp);
    echo "Verzeichnis-Handle: $handle<br>\n";
    echo "Dateien:<br>\n";
    while (false !== ($file = readdir ($handle))) {
        echo "$file\n";
    }
    closedir($handle);
    }
        fclose($fp);
    ?>

    hoffentlich kann mir jemand weiterhelfen

    grüße

  2. Hallo Sorgenkind :-)

    ich hab da ja mal ne brilliante idee, denk ich zumindest, aber darüber sol nich disskutiert werden ;)

    Mach' ich nicht, versprochen!

    ich han mich gerade gefragt, ob es möglich wäre, per php alle netzwerkfreigaben anzeigen zu lassen

    weiß jemand ob bzw. wie das geht, dass man erstmal die freigaben findet?

    Mir fällt die Kombination von
        exec()
    und dem Kommandozeilenbefehl
        net view
    ein.
    net view gegebenenfalls mehrfach hintereinander ausführen :-)

    PS nicht vergessen, alles lokales Netzwerk, nix internet oder so

    Schon klar!

    Gruss,

    Vinzenz

    1. moin

      Mir fällt die Kombination von
          exec()
      und dem Kommandozeilenbefehl
          net view
      ein.
      net view gegebenenfalls mehrfach hintereinander ausführen :-)

      werd ich probieren sobald ich wieder im netzwerk bin ;) danke

      wenn das funzt hätte ich nur noch das prob, wie ich dann auch darauf zugreifen kann

      will nix verändern, nur inhalt anzeigen lassen, und wenns nich geht das halt auch anzeigen, was ja dann über einfache kontrolle gehen würde .........

      grüße

      1. Hallo

        wenn das funzt hätte ich nur noch das prob, wie ich dann auch darauf zugreifen kann

        Mit
            exec()
        und
            dir \Servername\Freigabename

        Die Servernamen bekommst Du aus
            net view

        Die Freigabenamen aus
            net view \Servername

        Bevor ich es vergesse:
        exec() zu verwenden stellt nahezu immer ein Sicherheitsrisiko dar, ich weiß das. Aber Du willst das ja für private Zwecke in einem internen Netz verwenden.

        Gruss,

        Vinzenz

        1. rehallo

          also ich habjetz mal testhalber folgendes probiert (was im dos-prompt funzt)

          $test = exec('dir \127.0.0.1\d\*');
          var_dump($test);

          $test ist in diesem falle string(0) ""

          kannst mir sagen was ich falsch mache?

          danke

          gruß

          1. rehallo

            okok, hab das escapen vergessen, allerdings sagt er mir jetz nur: string(60) " 17 Verzeichnis(se), 0 Bytes frei"

            damit kann ich ja letztendlich nix anfangen ..... ?

            1. Hallo Sorgenkind,

              okok, hab das escapen vergessen, allerdings sagt er mir jetz nur: string(60) " 17 Verzeichnis(se), 0 Bytes frei"
              damit kann ich ja letztendlich nix anfangen ..... ?

              Klar, damit kannst Du nichts anfangen. Das ist nämlich die letzte Zeile der Ausgabe Deines Befehls.

              Um alle Ausgaben des dir-Befehls zu bekommen, musst Du dem exec-Befehl als zweiten Parameter ein Array übergeben. Da werden alle Ausgabezeilen reingeschrieben.

              http://www.php.net/manual/de/function.exec.php

              Gruss,

              Vinzenz

              1. re

                boah geil

                ich denke damit lässt sich was anfangen ;)

                wird zwar ne riesen schleife das ganze script, aber was solls ;)

                achja, was wenn dabei die maximale ausführungszeit von 30 sec überschritten wird?
                wenn das ganze dann 50 rechner abklappert, und die ganzen inhalte hierarchiologisch (krasses wort, richtig geschrieben?) darstellt, dann könnt das doch durchaus passieren oder?

                gruß und vielen dank

                1. aaaaales klar
                  set_time_limit(0);

                  jetz dürft ich wohl wunshlos glücklich sein ;)

                  danke vielmals vinzenz!!!!!!!!!!

                  grüße

                2. Hallo Sorgenkind,

                  b...

                  Ich mach mir wirklich Sorgen ;-)

                  achja, was wenn dabei die maximale ausführungszeit von 30 sec überschritten wird?

                  php.ini editieren :-)
                  Du bist ja schließlich in einem lokalen Netzwerk.

                  wenn das ganze dann 50 rechner abklappert, und die ganzen inhalte hierarchiologisch (krasses wort, richtig geschrieben?) darstellt, dann könnt das doch durchaus passieren oder?

                  Nein leider nicht richtig geschrieben, heißt hierarchisch...
                  Ja, das könnte durchaus passieren, eher es wird wohl passieren. Abhilfe, s.o.

                  gruß und vielen dank

                  Bitte, gern geschehen.

                  Gruss,

                  Vinzenz

  3. ja also ich hab ja noch vergessen, wenn ich die habe will ich zum beispiel auch den inhalt der freigaben darstellen, also muss ich auch drauf zugreifen .......... irgentwie

    hoffentlich geht das ......

    grüße