Johannes Weißl: (PERL/CGI) Schreiben in Dateien auf anderen Servern

Hallo!

1. Es ist ein Vor- und Nachteil, dass in diesem Forum so viel gepostet wird! Nachteil: Meine Nachricht von gestern ist bereits nicht mehr sichtbar! :-(

2. Das mit dem lesen klappt jetzt mit get($Url); Wie schaffe ich es aber, in eine Datei (die Dateirechte wurden auf 777 gestellt) auf einem anderen Server zu schreiben?

Im Modul LWP ist diese Funktion nicht vorhanden und trotz suchens kann ich keine so geartete Funktion finden!

Gibt es sowas überhaupt?

cu,
Johannes

  1. Hi,

    1. Das mit dem lesen klappt jetzt mit get($Url); Wie schaffe ich
      es aber, in eine Datei (die Dateirechte wurden auf 777 gestellt)
      auf einem anderen Server zu schreiben?

    »»

    Im Modul LWP ist diese Funktion nicht vorhanden und trotz suchens
    kann ich keine so geartete Funktion finden!

    Das geht auch so nicht. Man kann nicht auf andere Domains schreiben;
    das geht nur über den Umweg eines CGI-Scripts, z. B. so:

    $context = get($url);
    $geschrieben = get("http://der.server.de/cgi-bin/das-script.pl?".$context);

    Jetzt das Script müßte so aussehen:

    #!/usr/bin/perl
    my $data = $ENV{'QUERY_STRING'};

    open(DAT,">>datei.endung");
    print DAT $data;
    close(DAT);

    print "eingetragen";

    mfg
    CK1

    P.S.: diese Datei ist _nicht_ über den Browser ausführbar. Außerdem
    stellt sie eine Sicherheitslücke dar.

    1. Danke für eure Antworten!

      das geht nur über den Umweg eines CGI-Scripts, z. B. so:

      Bei mir ist das Problem, dass ich das Script nur auf einer anderen Domain ausführen kann!

      Naja, dann werde ich eben die benötigten Dateien zum Script dazulegen!

      (schön langsam wird der Platz dort eng :-( )

      cu,
      Johannes

    2. Hi,

      #!/usr/bin/perl
      my $data = $ENV{'QUERY_STRING'};

      open(DAT,">>datei.endung");
      print DAT $data;
      close(DAT);

      print "eingetragen";

      P.S.: diese Datei ist _nicht_ über den Browser ausführbar.

      sie _ist_ über den Browser ausführbar. Mit LWP::Simple kannst Du nicht mehr machen als mit irgendeinem anderen Client - das liegt in der Natur von HTTP. Beide, das Perl-Modul und der Browser, erhalten übrigens einen Internal Server Error als Antwort.

      Was Johannes vermutlich sucht ist ein Telnet- oder FTP-Modul; denn damit kann man (entsprechende Server auf dem Zielsystem sowie ein Login vorausgesetzt) auf einen fremden Rechner schreiben. Mit HTTP geht dies in aller Regel (s. klaus' Antwort) nicht.

      Cheatah

      1. Hi,

        sie _ist_ über den Browser ausführbar. Mit LWP::Simple kannst Du
        nicht mehr machen als mit irgendeinem anderen Client - das liegt
        in der Natur von HTTP. Beide, das Perl-Modul und der Browser,
        erhalten übrigens einen Internal Server Error als Antwort.

        Klar.. was ich meinte war eher, daß man beim Browser aufgrund des
        fehlenden Content-Types ein "document contains no data" bekommen
        wird ,)

        Mit HTTP geht dies in aller Regel (s. klaus' Antwort) nicht.

        Dasselbe habe ich auch gesagt.

        mfg
        CK1

        1. Hi,

          Beide, das Perl-Modul und der Browser,
          erhalten übrigens einen Internal Server Error als Antwort.

          Klar.. was ich meinte war eher, daß man beim Browser aufgrund des
          fehlenden Content-Types ein "document contains no data" bekommen
          wird ,)

          nö, das ist nur bei wenigen Servern der Fall. Der mit Abstand am häufigsten eingesetzte, den ich hier auch stillschweigend voraussetze (Apache), liefert nur Status: 500, anstatt einen Pseudo-Content-Type zu erzeugen.

          Cheatah

          1. hi,
            Aber grundsätzlich kann's der Apache, schon, das 'PUT'.
            Auch der IIS.
            Ist halt alles eine Frage der Konfiguration und Rechte usw.
            Fragt mich jetzt bitte nicht, wie, ich hab's nur gesehen, daß es gehen sollte. Der Apache ist anscheinend standardmäßig nicht richtig konfiguriert, deshalb der Error 500, der IIS (3.0) sich mit einem Accessviolation-Error.

            Wie sieht's aus mit ienem konfigurierten WebDAV?

            Grüße
            Klaus

  2. Hallo
    Das HTTP-Protokoll sieht dafür die Methode 'PUT' vor. Ob sie allerdings vom Server  unterstützt wird, ist fraglich.

    EIn bißchen experimentieren schadet ja nicht.

    Grüße
    Klaus