Rechner mit PHP in einem Netzwerk anpingen

Programmier-Tipps und -Tricks. Artikel zum Thema Java, PHP, C++, Delphi, VB, etc.

Rechner mit PHP in einem Netzwerk anpingen

Beitragvon CoolCasimir am 15.01.2005, 21:19

Möchte man wissen welche Rechner in einem Netzwerk eingeschaltet sind oder man möchte wissen ob ein Server eingeschaltet ist, kann man den ping Befehl verwenden und diesen mit PHP auswerten lassen.
Ich habe mal ein Script geschrieben welches mir meine Rechner zu hause anpingt und mir grafisch darstellt ob ein Rechner eingeschaltet ist oder nicht.
Man benötigt einen Webserver mit PHP welcher nicht im Savemodus läuft.
Code: Alles auswählen
<?php

/* Dieses Script Pingt einen oder mehrere Rechner in einem Netzwerk
   an und stellt somit fest ob diese/r eingeschaltet sind/ist oder nicht.
   Dafür muss natürlich auf dem entsprechenden Computer auf dem das Script
   laufen soll ein Webserver mit PHP installiert sein. ;-)*/

// ---------------- KONFIGURATION --------------

$iparray=array("Becks-Server:192.168.0.1", "Sylvester:192.168.0.2", "Erika:192.168.0.3", "Loaner3:192.168.0.4", "Accesspoint:192.168.0.10");

// Einfach den Computernamen, Doppelpunkt und die IP Adresse (oder Namen im Netzwerk) schreiben.
// Beispiel--> "Arbeitszimmer:192.168.0.2", "Server:192.168.1.1"

// ----------- ENDE DER KONFIGURATION -----------


function ping($PC,$ip)
{
//Pingoptionen für Linux Rechner
  $cmd=shell_exec("ping -c 1 -t 2 $ip"); // Ping mit counter=1 und timeout=2 (wartet zwei millisek. auf Antwort)
  $checker=explode(",",$cmd); // Array erstellen um auf Received = 1 oder Received = 0 checken zu können.
 
  if (eregi ("0", $checker[1], $out))
  {
      $connectionstatus="<img src=\"off.gif\">";
      $text="ist offline";
  } // Check ob "0" im Array an 1. Stelle enthhalten.
 
  if (eregi ("unknown", $checker[0], $out))
  {
      $connectionstatus="<img src=\"err.gif\">";
      $text="ist unbekannt / hat einen unbekannten Status";
  } // Check ob "unknown" im Array an 0. Stelle enthalten.
 
  if (eregi ("1", $checker[1], $out))
  {
      $connectionstatus="<img src=\"on.gif\">";
      $text="ist online";
  } // Check ob "1" im Array an 1. Stelle enthhalten.

  $output="$connectionstatus [$ip] <b>$PC $text.</b><br><br>";
  return $output; // Die Ausgabevariable als Rückgabewert.
}

while(list($k,$v)=each($iparray))  // Alle Computer "durchpingen" ;-)
{
$pcip=explode(":",$v); // Rechnername und IP in ein Array schreiben (Bei ":" erfolgt Trennung)
$output=ping($pcip[0],$pcip[1]); // Funktion mit den Daten des Arrays aufrufen
echo $output; // Fertig
}
?>

Das ganze speichern als ping.php
Wenn man noch eine Aktualisierung haben will kann man das mit Javascript lösen:
Code: Alles auswählen
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
       <title>Pingscript</title>
       
<script language="JavaScript">
<!--

var sURL = unescape(window.location.pathname);

function doLoad()
{
    setTimeout( "refresh()", 2*2000 );
}

function refresh()
{
    window.location.href = sURL;
}
//-->
</script>

<script language="JavaScript1.1">
<!--
function refresh()
{
    window.location.replace( sURL );
}
//-->
</script>

<script language="JavaScript1.2">
<!--
function refresh()
{
    window.location.reload( false );
}
//-->
</script>
       
</head>
<body onload="doLoad()">
<font face="verdana">
<b>Status der Comupter:</b><br><br>
<?php
include("ping.php");
?>
</font>
</body>
</html>
CoolCasimir
Moderator
 
Beiträge: 2194
Registriert: 14.01.2004, 14:07
Wohnort: Hansestadt Hamburg


Beitragvon miezmutz am 29.01.2005, 00:58

ist das für niemanden hilfreich, oder sagt's nur keiner?
miezmutz
Moderator
 
Beiträge: 2411
Registriert: 19.07.2004, 13:04
Wohnort: Rendsburg

Beitragvon CoolCasimir am 29.01.2005, 13:14

miezmutz hat geschrieben:ist das für niemanden hilfreich, oder sagt's nur keiner?

Es ist ja keine antwort erforderlich. Einfach Quelltext kopieren: Fertig :D
CoolCasimir
Moderator
 
Beiträge: 2194
Registriert: 14.01.2004, 14:07
Wohnort: Hansestadt Hamburg

Beitragvon miezmutz am 29.01.2005, 14:29

ja, aber fändest du es nicht auch nett, wenn du die ein oder andere Rückmeldung erhalten würdest... :)
miezmutz
Moderator
 
Beiträge: 2411
Registriert: 19.07.2004, 13:04
Wohnort: Rendsburg

Beitragvon fe$ch am 02.04.2005, 13:25

Also ich brauch sowas nicht. Wir haben nur 2 Computer zu hausen, und der andere ist wenn er eingeschaltet ist so laut, da weis man sofirt ob der an ist oder nicht :wink:

dafür bracuh ich nicht mal en script :wink:
fe$ch
 
Beiträge: 936
Registriert: 25.03.2005, 13:44

Beitragvon Nikita am 05.04.2005, 19:05

Hallo@fe$ch

Ich verfolge schon eine ganze Weile, wie du in unsaeglichem Pisa-Deutsch in allen moeglichen Forenbereichen sinnloses Zeug schreibst.

Ueberdenke bitte genau, was du zu sagen hast (und dann bitte in einigermassem verstaendliches Deutsch), ansonsten werden wir uns von dir hier im Forum verabschieden muessen.
Nikita
Moderator
 
Beiträge: 11478
Registriert: 07.12.2003, 16:53
Wohnort: Lissabon

Beitragvon fe$ch am 05.04.2005, 21:04

ok, ich strenge mich an ... :oops: ist mir peinlich, mit den vielen Rechtschreibfehlern, aber schreibe ich den wirklich so viel dummes Zeug ? Ich habe auch schon zurLösung verholfen ...
fe$ch
 
Beiträge: 936
Registriert: 25.03.2005, 13:44

Re: Rechner mit PHP in einem Netzwerk anpingen

Beitragvon andy6 am 14.08.2005, 18:03

Hallo

Mich interresiert das script.
Brauche so ein script mit dem man von einen webserver aus die einzelnen ip anpingen kann . So das mann auf einer Webseite sieht welche ip online ist.
was mus man bei deinem script umschreiben das es auch auf einen webserver funktioniert, wenn man eine ip aus dem internet anpingen will und deren Status auf einer Webseite anzeigen will?

Vielen Dank für die Hilfe im Voraus

Andy6
andy6
 
Beiträge: 2
Registriert: 14.08.2005, 17:52

Beitragvon CoolCasimir am 14.08.2005, 19:29

Du musst eigentlich nur den Timeout höher setzen.. das wars.
CoolCasimir
Moderator
 
Beiträge: 2194
Registriert: 14.01.2004, 14:07
Wohnort: Hansestadt Hamburg

Vielen Dank

Beitragvon andy6 am 15.08.2005, 10:44

Danke für deine rasche antwort
jetzt funktioniert es

Mfg Andy


CoolCasimir hat geschrieben:Du musst eigentlich nur den Timeout höher setzen.. das wars.
andy6
 
Beiträge: 2
Registriert: 14.08.2005, 17:52

Beitragvon Schumbi am 14.12.2005, 11:56

Hallo,
nice Script und bestimmt auch sehr wirkungsvoll.
nur leider sind die befehle für das ping als externes Programm bei bei Freewebspace anbietern nicht erlaubt. :(
gibt es da vielleicht noch eine andere Möglichkeit das zu realisieren?

Mit freundlichem Gruß Schumbi
Schumbi
 
Beiträge: 2
Registriert: 14.12.2005, 11:47

Beitragvon Schumbi am 14.12.2005, 11:58

Hallo,
nice Script und bestimmt auch sehr wirkungsvoll.
nur leider sind die befehle für das ping als externes Programm bei bei Freewebspace anbietern nicht erlaubt. :(
gibt es da vielleicht noch eine andere Möglichkeit das zu realisieren?

Mit freundlichem Gruß Schumbi
Schumbi
 
Beiträge: 2
Registriert: 14.12.2005, 11:47

Beitragvon S1lv3R am 27.12.2005, 18:25

Tach,
hab nen kleines Prob, also ich hoste meinen eigenen Apache (2.0.55) mit Php 5.1.1 und bei mir bricht das Script mit der Meldung:
Code: Alles auswählen
Notice: Undefined variable: connectionstatus in F:\Server\Apache2\htdocs\ping.php on line 42
Notice: Undefined variable: text in F:\Server\Apache2\htdocs\ping.php on line 42

ab. Also Computername und IP giebt er noch aus. Liegt sicherlich irgendwie an meiner Konfiguration, wäre dankbar für Hilfe. Ist sicherlich ein tolles und nützliches Script wenn es bei mir dann mal funktioniert :lol:
mfg S1lv3R
S1lv3R
 
Beiträge: 3
Registriert: 10.03.2005, 19:44

Beitragvon CoolCasimir am 07.01.2006, 02:06

S1lv3R hat geschrieben:Tach,
hab nen kleines Prob, also ich hoste meinen eigenen Apache (2.0.55) mit Php 5.1.1 und bei mir bricht das Script mit der Meldung:
Code: Alles auswählen
Notice: Undefined variable: connectionstatus in F:\Server\Apache2\htdocs\ping.php on line 42
Notice: Undefined variable: text in F:\Server\Apache2\htdocs\ping.php on line 42

ab. Also Computername und IP giebt er noch aus. Liegt sicherlich irgendwie an meiner Konfiguration, wäre dankbar für Hilfe. Ist sicherlich ein tolles und nützliches Script wenn es bei mir dann mal funktioniert :lol:
mfg S1lv3R

Vielleicht hilft es ja wenn Du die Variablen vorher deklarierst..
Das habe ich nicht gemacht.
CoolCasimir
Moderator
 
Beiträge: 2194
Registriert: 14.01.2004, 14:07
Wohnort: Hansestadt Hamburg

Beitragvon Sidewinder am 16.02.2006, 11:05

S1lv3R hat geschrieben:Tach,
hab nen kleines Prob, also ich hoste meinen eigenen Apache (2.0.55) mit Php 5.1.1 und bei mir bricht das Script mit der Meldung:
Code: Alles auswählen
Notice: Undefined variable: connectionstatus in F:\Server\Apache2\htdocs\ping.php on line 42
Notice: Undefined variable: text in F:\Server\Apache2\htdocs\ping.php on line 42

ab. Also Computername und IP giebt er noch aus. Liegt sicherlich irgendwie an meiner Konfiguration, wäre dankbar für Hilfe. Ist sicherlich ein tolles und nützliches Script wenn es bei mir dann mal funktioniert :lol:
mfg S1lv3R


Auch wenn es vermutlich ein bisschen spät ist:

Diese Meldung bringt dein Apache wenn du die Variablen vor der ersten Verwendung nicht deklariert/definiert hast.

Du hast 2 Möglichkeiten, um die Meldung wegzubekommen:

1. Deklariere die Variablen vor der Verwendung.
2. Ändere den Eintrag für das Error-Reporting in deiner php.ini wie folgt ab: error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT
Damit verschwinden diese Art Hinweise und es werden nur noch "wirkliche" Fehlermeldungen bei der Skriptbearbeitung angezeigt. ;)

mfg, Sidewinder
Sidewinder
 
Beiträge: 9
Registriert: 16.02.2006, 10:53

Nächste

Zurück zu Artikel Softwareprogrammierung

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste