(PERL/CGI) Schreiben in Dateien auf anderen Servern
Johannes Weißl
0 Christian Kruse0 klaus
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
Hi,
- 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.
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
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
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
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
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
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