Remote Onlinestatus abfragen

Wie man den Online-Status bzw. die aktuelle IP-Adresse eines PC's mit Dynamischer IP-Vergabe ermittelt und
auf einer Homepage zur Ansicht stellt, soll in diesem HowTo beschrieben werden.

Zum besseren Verständnis hier noch eine kleine Übersicht zum Ablauf. Skizze öffnen


Vorraussetzungen:

  • Linux (in diesem Fall wird von SuSE ausgegangen).
  • 2 PCŽs mit je einem eigenen ISDN oder DSL Anschluss
  • Provider mit Webspace und FTP-Zugang
  • funktionierende ISDN oder DSL Konfiguration unter Linux


    PC01:


  • Editieren von /etc/ppp/ip-up:

    Je nach Anschluss befindet sich im ip-up script eine Section für ISDN (ippp*) bzw. für DSL (ppp*).
    Diese wiederrum sind in 2 weitere Sektionen unterteilt:

    ip-up) und ip-down)

    Je nach Anschluss nun folgendes ans Ende der ip-up) Sektion des Konfigurierten Anschlusses schreiben:

    Die HTML-Seite könnte z.B. wie folgt aussehen:

    #
    # HTML Seite pc01.htm (den echo befehl und die folgenden HTML-Tags in eine Zeile schreiben!!!)
    #
    echo > /scripte/pc01.htm '<html>
    <head>
    <title>pc01</title>
    </head>
    <body bgcolor="#ffffff" text="#000000">
    <center>
    <table border=0 cellpaddin="5" cellspacing="0" width="90%"><tr>
    <td align="left" width="40%" height="19">
    <strong>PC01:</strong>
    </font>
    </td>
    <td align="center" width="10%" height="19">
    <img src="dot_green.gif" height="15" width="15">
    </td>
    <td bgcolor="#C0C0C0" align="center" width="25%" height="19">
    <font size="2" face="Arial">
    <strong>'$LOCALIP'</strong>
    </font>
    </td>
    <td bgcolor="#C0C0C0" align="center" width="25%" height="19">
    <font size="2" face="Arial">
    </strong>
    <a href="http://'$LOCALIP'" target="_new">;Click here</a>
    </font>
    </td>
    </tr>
    </table>
    </center>
    </body>
    </html>
    
    # # Script pc01.ip erstellen # echo > /scripte/pc01.ip 'ping '$LOCALIP' -c 2 | grep "0 packets received" && /scripte/pc01off'
    # # Erstellte(s) HTML-Seite und Script uploaden # /script/putpc01.ip


    Erklärung:

    Zuerst erstellen wir eine HTML-Seite. Die Ausgabe wird in die Datei pc01.htm umgeleitet. Durch die Variable '$LOCALIP' wird die vom Provider zugewiesene IP-Adresse auf PC01 ausgelesen.
    Nun wird das Script pc01.ip erstellt (Wird aber erst auf PC02 ausgeführt!). Hier wird ebenfalls die aktuellen IP-Adresse ausgelesen. Diese IP soll dann zweimal angepingt werden. Die Ausgabe des pingŽs wird nach dem Inhalt 0 packets received durchsucht. Nur wenn der Suchstring passt wird das Script pc01off ausgeführt. Damit das Script mit der aktuellen IP von PC01 auch für PC02 verfügbar ist, müssen wir das soeben erstellte Script und die HTML-Seite mit dem Script putpc01.ip auf unseren FTP-Server uploaden.


  • putpc01.ip:

    #!/bin/sh
    /usr/bin/ftp provider <<EOF
    username
    password
    cd pfad
    lcd /scripte
    mput pc01.*
    bye
    <<EOF
    



    Nun wenden wir uns dem PC02 zu, der am besten mit einer DSL-Flatrate mit dem Provider verbunden ist.


    PC02:


    Auf PC02 müssen noch folgende Scripte auf PC02 in /scripte erstellt werden:


  • checkIPpc01:

    #!/bin/sh
    /scripte/getpc01.ip
    chmod 0700 /scripte/pc01.ip
    /scripte/pc01.ip
    


  • getpc01.ip:

    #!/bin/sh
    /usr/bin/ftp provider <<EOF
    username
    password
    cd pfad
    lcd /scripte
    get pc01.ip
    bye
    <<EOF
    


  • pc01off:

    #!/bin/sh
    /usr/bin/ftp provider <<EOF
    username
    password
    cd pfad
    lcd /scripte
    put pc01.htm
    bye
    <<EOF
    


  • pc01.htm:

    <html>
    <head>
    <title>pc01</title>
    </head>
    <body bgcolor="#ffffff" text="#000000">
    <center>
    <table border=0 cellpaddin="5" cellspacing="0" width="90%"><tr>
    <td align="left" width="40%" height="19">
    <strong>w;PC01:</strong>
    </font>
    </td>
    <td align="center" width="10%" height="19">
    <img src="dot_red.gif" height="15" width="15">
    </td>
    <td bgcolor="#C0C0C0" align="center" width="25%" height="19">
    <font size="2" face="Arial">
    <strong>Offline</strong>
    </font>
    </td>
    <td bgcolor="#C0C0C0" align="center" width="25%" height="19">
    <font size="2" face="Arial">
    </strong>
    Nicht Verfügbar
    </font>
    </td>
    </tr>
    </table>
    </center>
    </body>
    </html>
    


    Das Script checkIPpc01 starten wir als Cronjob z.B. alle 5 Minuten (oder öfter), um eine Zeitnahe Statusabfrage zu erhalten:

    #
    # Serverstatus checken (PC01)
    #
    5,10,15,20,25,30,35,40,45,50 * * * * /scripte/checkIPpc01
    


    Erklärung:

    Das Script checkIPpc01 ruft das Script getpc01.ip auf. Dieses holt sich das Script pc01.ip, in dem
    die aktuellen IP von PC01 steht, beim FTP-Server ab. Da das Script nach dem Download nicht "executable" ist, müssen wir dieses mit
    chmod 0700 /Pfad/Datei nachholen.
    Als nächstes überprüft unser auf PC01 erstelltes Script ob diese IP-Adresse von PC02 aus erreichbar ist. Sollte dies
    nicht der Fall sein so wird das Script pc01off aufgerufen. Das lädt einfach nur das auf PC02 hinterlegte HTML-File
    pc01.htm auf unseren FTP-Server.
    Und zu guter Letzt wird dieser Vorgang bzw. Scriptaufruf alle 5 Minuten per Cronjob wiederholt.


    Damit Ihr Euch ein Bild machen davon könnt, wie so etwas dann fertig aussieht, schaut einfach mal auf folgende Seite: Serverstatus



    Cont@ct: mail: Thomas Müller



  • [Zurück] [Zurück zu Tom's Ecke] [Startseite]


    Die unter diesem Kapitel liegenden Seiten wurden erstellt von Thomas Müller