Hallo Sander!
Ich hab' am Wochenende selbst gebastelt und gegabelt.
Leider ist meine Version nicht aus einem Template abrufbar.
Mal sehen.
Hier mein - funktionierender! -Code:
use strict;
use CGI::Carp qw(fatalsToBrowser);
$| = 1;
#Anweisung an den Perl Interpreter zum Schreiben des Kopfes der HTML Seite
#
#
print "Content-type: text/html\n\n";
print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">', "\n";
print "<html><head><title>Testausgabe</title>\n";
print "</head><body>\n";
#Die ID des Elternprozesses wird ermittelt
#
#
my $Eltern_pid = $$;
#fork() 'gabelt' in den parallel ablaufenden Kind- und Elternprozess
#Der Elternprozess kann im if-Part bearbeitet werden
#Der Kindprozess wird im else-Part bearbeitet
#Näheres bitte bei Guru Münz nachschauen
#Von dort hab ich's auch...
my $Kind_pid = fork();
if($Kind_pid) {
#Der Elternprozess schläft 5 sec...
sleep(5);
#Danach wird der Kindprozess abgebrochen...
kill("KILL",$Kind_pid);
#...und eine Meldung erzeugt:
print "Der Teilzeitserver ist nicht erreichbar!";
}
else {
#Hier der Kindprozess, er läuft solange der Elternprozess schläft,
use LWP::Simple; #für get()
my $Eltern_pid = getppid();
#Der Teilzeitserver schreibt, wenn er mit dem Internet verbunden ist, seine
#aktuelle IP in eine kleine Textdatei, die auf dem Vollzeitserver liegt
#Von dort wird die aktuelle IP gelesen:
my $adr = get("http://vollzeitserver.de/ordner1/ipadresse.txt");
my $adresse = "http://".$adr;
#Der Kindprozess versucht den Inhalt der Seite unter der angegebenen Adresse
#zu holen
#
my $y = get($adresse);
#Wenn die Seite den Suchstring enthält
# - das geht natürlich nur, wenn der Teilzeitserver online ist ! -
#...
if ($y =~ /text_auf_der Seite/){
#gibt der Kindprozess eine Meldung aus und setzt einen Link
#zum Teilzeitserver mit der aktuellen Adresse:
print "<a href=",$adresse,">Ja,Teilzeitserver ist aktiv!</a>";
#...und beendet den Elternprozess.
kill("KILL",$Eltern_pid);
};
#Der Kindprozess sucht die Adresse solange bis er vom Elternprozess 'gekillt' wird...
exit(0);
}
print "</body></html>\n";
#Diesen Code als z.B. teilzeitserver.pl Datei im EIGENEN cgi-bin Verzeichnis ablegen
#und mit <!--#exec cgi="/cgi-bin/teilzeitserver.pl" --> aus einer .shtml-Datei aufrufen
#Der Aufruf aus einem baseportal-Template scheiterte bislang!