Re: Abfrage ob URL existiert oder ob Server online? - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von horschtl (7 Beiträge) am Montag, 25.August.2003, 12:52. WWW: www.nabu-rhein-sieg.de
    Re: Abfrage ob URL existiert oder ob Server online?

      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:

      #!/usr/bin/perl -w
      

      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,
      #hier also 5sec:
      

      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!
      


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von horschtl (7 Beiträge) am Samstag, 16.August.2003, 10:01. WWW: www.nabu-rhein-sieg.de
    Abfrage ob URL existiert oder ob Server online?

      Hallo!


      Kann man mit 'baseportal' und 'perl' abfragen, ob ein privater 'Teilzeit-Server' gerade online ist oder nicht?

      Gibt's da so was ähnliches <incude???> wie:
      <perl>
      
      use strict;

      use LWP::Simple;

      if (head('http://teilzeit.server/'))
      {
      #zeige_link_dorthin
      }
      else
      {#zeige_nix
      }
      </perl>
      


      Oder irgenwas mit 'telnet' und 'ping' ???

      Danke!

     Antworten

    Beitrag von Sander (8133 Beiträge) am Montag, 18.August.2003, 16:46.
    Re: Abfrage ob URL existiert oder ob Server online?

      hast du einen Mietaccount?
      Dann geht das
      <perl>
      $x=get("http://teilzeit.server/");
      if ($x=~/irgendeinwort,wasbeidirimTextvorkommt/)
      {
      #zeige_link_dorthin
      }
      else
      {#zeige_nix
      }
      </perl>
       
      
      Sander

     Antworten

    Beitrag von horschtl (7 Beiträge) am Mittwoch, 20.August.2003, 13:54. WWW: nabu-rhein-sieg.de
    Re: Abfrage ob URL existiert oder ob Server online?

      Ja,Sander, das klappt!

      Aber leider mit einer kleinen Unschönheit.
      Wenn der Server tatsächlich nicht erreichbar ist,
      sucht der Browser bis zu drei Minuten nach der Adresse,
      die er natürlich nicht finden kann,
      zeigt danach allerdings das, was ich wollte.
      Nur: Kein Besucher hat so lange Geduld.
      Kann man da evtl was mit 'runtime' basteln?
      Noch 'ne andere Idee?

      Wenn der Server erreichbar ist, ist alles okay.

     Antworten

    Beitrag von Sander (8133 Beiträge) am Samstag, 23.August.2003, 01:37.
    Re: Abfrage ob URL existiert oder ob Server online?

      ich hab nochmal drüber nachgedacht.
      Hast du ein eigenes cgi-bin? oder php? dann kann man etwas tricksen.

      leider geht fork() bei bp nicht, deswegen muß man einen Umweg machen.

      Grüße

      Sander

     Antworten

    Beitrag von horschtl (7 Beiträge) am Samstag, 23.August.2003, 09:35. WWW: www.nabu-rhein-sieg.de
    Re: Abfrage ob URL existiert oder ob Server online?

      Hallo Sander!

      Das ist Service...
      Ja, cgi oder php wären möglich.
      Und was kann man noch tun
      wenn sich nix gabeln() läßt?


      Horst

     Antworten

    Beitrag von Sander (8133 Beiträge) am Samstag, 23.August.2003, 14:12.
    Re: Abfrage ob URL existiert oder ob Server online?

      ähm, den rest muß ich mir heute abend mal ausdenken.
      kurz skizziert:

      du rufst ein extrascript auf, welches wiederum in einem Kindprozess prüft, ob dein teilzeitserver online ist. Damit er aber nicht warten muß, bis ne fehlermeldung zurückkommt wird im Elternprozess 5 sekunden gewartet. wenn bis dahin keine Antwort der website zum kindprozess erfolgte, wird der kindprozess vom elternprozess beendet und ne ausgabe "nicht online" generiert (forken). Diese wird dann bei bp mit $x=get("dieses workarroundscript"); eingebunden.

      wie gesagt, hab ich jetzt keine Zeit, aber heute abend (endlich wieder was kniffeliges *gg*)

      Sander

     Antworten

    Beitrag von horschtl (7 Beiträge) am Samstag, 23.August.2003, 15:00. WWW: nabu-rhein-sieg.de
    Re: Abfrage ob URL existiert oder ob Server online?

      Hallo Sander!
      Es besteht keine Not und keine Eile!!!
      Wenn Du Zeit und Lust hast, hau rein.
      Horst

     Antworten

    Beitrag von horschtl (7 Beiträge) am Montag, 25.August.2003, 12:52. WWW: www.nabu-rhein-sieg.de
    Re: Abfrage ob URL existiert oder ob Server online?

      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:

      #!/usr/bin/perl -w
      

      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,
      #hier also 5sec:
      

      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!
      

     Antworten

    Beitrag von horschtl (7 Beiträge) am Montag, 25.August.2003, 13:07. WWW: nabu-rhein-sieg.de
    Re: Abfrage ob URL existiert oder ob Server online?

      Auweia,
      du schreibst ja wie's geht,
      also:
      Aus einem baseportal-Template heraus wird mit:

      $x = get("http://www.vollzeitserver.de/cgi-bin/teizeitserver.pl");
      out $x;
      

      das script aufgerufen.
      Klappt prima.

      hoaschtl

     Antworten

    Beitrag von Sander (8133 Beiträge) am Montag, 25.August.2003, 14:23.
    Re: Abfrage ob URL existiert oder ob Server online?

      hihi,

      ich hab jetzt ne lösung, die sind 5 zeilen im .pl :-)
      ob aber der apache läuft, bekommt man dabei nicht raus. sollte er aber, wenn der server per ping erreichbar ist.

      print "Content-type: text/html\n\n";
      use Net::Ping;
      $p = Net::Ping->new();
      print "$host is alive.\n" if $p->ping('deinteilzeitserver.tld',5); # 5 sek timeout
      $p->close();
      

      mehr dazu: http://www.perldoc.com/perl5.8.0/lib/Net/Ping.html

      aber ansonsten ist die idee gut umgesetzt. wobei das kill ziemlich hart ist.
      dort kann man andere sig senden und den prozess ordentlich beenden ;-)

      Sander

     Antworten

    Beitrag von horschtl (7 Beiträge) am Montag, 25.August.2003, 15:21. WWW: www.nabu-rhien-sieg.de
    Re: Abfrage ob URL existiert oder ob Server online?

      Ja Sander,
      ich bin und war mir sicher, dass es sanftere Methoden
      zur Lösung des Problems geben muss, aber ich bin ja

      mit meinem apache ganz alleine :(
      in fremder perlprärie :(
      nachts :(

      unterwegs gewesen und da

      m u s s m a n s i c h e b e n s c h o n m a l d u r c h s e t z e n !!!

      Kurz:
      Ich bin erst mal so zufrieden und mit dem 'ping' probier ich später mal.

      bye thx horschtl

     Antworten


     
 Liste der Einträge von 35550 bis 35700:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.06s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!