Hilfe: Geht das & wenn ja wie?

Hi

Ich brauche drigend Hilfe:
Ein Freund und ich haben haben eine Page mit Freeware.
Nun erreichen wir das Transferlimit und müssen daher was tun.
Unsere Idee wäre ein Mirror nun gibts zwei Probleme:

  • Wie können wir per URL-Aufruf (nur durch uns .htaccess-geschützt) vom einem Server auf den zweiten mittels perl (kein Telnet) die immer gleiche Softwaredatei über einen direkten FTP-Connect auf den zweiten Server spiegeln?
    Also wir laden auf den ersten Server die Datei hoch und dann rufen wir www.domain.de/cgi-bin/spiegelung.pl im Browser auf.
    Dann kopiert Server (ist ein root-server von 1&1) die Dateien auf Server zwei via FTP und bestätigt dies im browser das es erfolgreich war.
    Kann einer BITTE kurze hier posten wie dieses spieglung.cgi-Script lauten muss?
    Ein zweiter Upload ist magels DSL und Flat auf Dauer zu teuer bei 8 MB Grösse und Updates fast alle paar Tage…

  • Lastenverteilung beim Download:
    Die User sollen nix merken, sondern wenn diese auf auf den Download-Link klicken soll ein cgi oder php-Script automatisch an einen der Server weiterleiten. Und zwar abwechselnd.
    Mein Freund kennt sich nur in Delphi aus und ich habe gar keine Ahnung.

HELP!

THX!

Hi

  • Wie können wir per URL-Aufruf (nur durch uns
    .htaccess-geschützt) vom einem Server auf den zweiten mittels
    perl (kein Telnet) die immer gleiche Softwaredatei über einen
    direkten FTP-Connect auf den zweiten Server spiegeln?

aus perldoc Net::FTP (etwas abgeändert);

use Net::FTP;
use CGI:Carp ‚fatalsToBrowser‘;
print „Content-Type: text/plain“;
$ftp = Net::FTP->new(„some.host.name“) or die $!;
$ftp->login(„user“,‚pass‘) or die $!;
$ftp->cwd("/pub");
$ftp->put(„local.file“) or die $!;
$ftp->quit;
print „Ok“;

  • Lastenverteilung beim Download

$url[0] = „http://…“;
$url[1] = „http://…“;
srand();
print „Location: „.$url[int(rand(scalar @url))].“\n\n“;

Die User sollen nix merken, sondern wenn diese auf auf den
Download-Link klicken soll ein cgi oder php-Script automatisch
an einen der Server weiterleiten. Und zwar abwechselnd.

…zufällig ist wesentlich einfacher, und erfüllt den gleichen Zweck. (Alles in Perl)

Alexander

Hi Alexeander

THX THX! THX!

Leider aber klappts nicht,bekomme einen Internal Server error.
Rechte sind richtig gesetzt…
Wenn ich per SSH das Script mal starte kommt:
pXXXXXX:/home/www/web2/html/cgi-bin # ./mirror.pl
syntax error at ./mirror.pl line 4, near „use CGI:“
Execution of ./mirror.pl aborted due to compilation errors.

Hier das Script wie ich es als mirror.pl abgespeichert habe:


#!/usr/bin/perl

use Net::FTP;
use CGI:Carp ‚fatalsToBrowser‘;
print „Content-Type: text/plain“;
$ftp = Net::FTP->new(„domain.de“) or die $!;
$ftp->login(„username“,‚password‘) or die $!;
$ftp->cwd(„backup“);
$ftp->put("/home/www/web2/html/english/download/programm.exe") or die $!;
$ftp->quit;
print „Ok“;

Any idea?
THX!

Hi Alexeander

Hier das Script wie ich es als mirror.pl abgespeichert habe:


#!/usr/bin/perl

use Net::FTP;
use CGI:Carp ‚fatalsToBrowser‘;

use CGI::Carp ‚fatalsToBrowser‘;

…ein : vergessen

Hi Alexander

THX…aber leider immer noch Error…

Any new idea?

THX!

Hi Alexander

THX…aber leider immer noch Error…

Any new idea?

Welcher Fehler ? Nochmal komplett aus der Shell:
alx@server:~> cat ftptest.pl
#!/usr/bin/perl
use Net::FTP;
use CGI::Carp ‚fatalsToBrowser‘;
print „Content-Type: text/plain\n\n“;
$ftp = Net::FTP->new(„localhost“) or die $!;
$ftp->login(„username“,‚passwort‘) or die $!;
$ftp->cwd("/tmp");
$ftp->put(„ftptest.pl“) or die $!;
$ftp->quit;
print „Ok“;
alx@server:~> perl ftptest.pl
Content-Type: text/plain

Okalx@server:~> ls /tmp/ftp*
/tmp/ftptest.pl

Ansonsten einfach mal die Fehlermeldung posten. Wenn es nur von der Konsole aus aufgerufen werden soll, kann man
use CGI::Carp ‚fatalsToBrowser‘;
print „Content-Type: text/plain\n\n“;
auch weglassen, das ist nur nötig beim Aufruf per CGI.

Hi Alexandder

Thx für Deine Mühen.

Unter der Konsole gehts einwandfrei.
Nur leider nicht per www.domain.de/cgi-bin/ftptest.pl
Dann kommt im Browser:

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, [no address given] and inform them of the time the error occurred, and anything you might have done that may have caused
the error.

More information about this error may be available in the server error log.

Das Problem ist, das der Aufruf über den Browser gehen muss, da mein Freund keinen SSH-Zugriff hat bzw. das zu lange dauern würde sich jedesmal einzuloggen.

THX!

Hi!

Unter der Konsole gehts einwandfrei.
Nur leider nicht per www.domain.de/cgi-bin/ftptest.pl
Dann kommt im Browser:

Internal Server Error

Schau Dir mal den Thread „500 Internal Server Error“
weiter unten in diesem Brett an.

Gruß,
-Andreas.

Hi !

Dann kommt im Browser:

Internal Server Error

chmod 755 ?
Content-Type Zeile drin gelassen (mit \n\n am Ende?), wie in der späteren Message ?

Wenn die Datei sehr groß ist, d.h. die Übertragung zu lange dauert, kann es auch sein, das das Script vorher vom Webserver abgebrochen wird, dann geht’s nur per Shell.

Alexander