selfhtml.de - Alles für den Webmaster!

 

Empfehlung:

wix.com

Kostenlose Homepage

Besuchen Sie auch:

Jobs:

Ping Abfrage von Webseite im Intranet

Autor: laza86
Datum: 17.10.2012 09:47:16

Guten Morgen zusammen,

ich melde mich hier nach langem auch mal wieder.
Natürlich gleich mit einer Frage an euch Experten ;)

Ich arbeite momentan an einer Intranetlösung was das Loggen, Monitoring und Dokumentation in der IT umfasst.

Unter anderem sind in diesem System auch die Computernamen bzw. die IP Adressen der gesamten IT Umgebung hinterlegt.

Jetzt würde ich gerne ein Button hinter die IP Adresse stellen, mit dem ein Ping auf die jeweilige Adresse aufgerufen wird um zu Prüfen ob der Rechner überhaupt noch exisitert bzw. angeschaltet ist.

Hierfür gibt es von mir schon mal verschiedene Ansätze:

1. Ein Batch Datei aufrufen, die aber aus Browsersicherheit immer erst lokal auf den PC heruntergeladen werden muss.

2. Die lokale cmd.exe mit Kommands aufrufen, was aus Sicherheitsgründen bei mir noch nicht funktioniert hat.

Und 3. das ich wie bei einer Prüfung ob der Server erreichbar ist, das Ganze mit PHP bzw. JS umsetzen.

Was meint ihr dazu?
Gibt es hierfür vielleicht schon fertige Scripts die das Pingen auf lokaler Ebene ermöglichen?

Bin um jeden Rat dankebar,
Gruß laza



Re: Ping Abfrage von Webseite im Intranet

Autor: reporter
Datum: 17.10.2012 11:27:49

Hallo,


> Unter anderem sind in diesem System auch die
> Computernamen bzw. die IP Adressen der gesamten
> IT Umgebung hinterlegt.
>
> Jetzt würde ich gerne ein Button hinter die IP
> Adresse stellen, mit dem ein Ping auf die
> jeweilige Adresse aufgerufen wird um zu Prüfen ob
> der Rechner überhaupt noch exisitert bzw.
> angeschaltet ist.
>
> Hierfür gibt es von mir schon mal verschiedene
> Ansätze:
>
> 1. Ein Batch Datei aufrufen, die aber aus
> Browsersicherheit immer erst lokal auf den PC
> heruntergeladen werden muss.

In meinem Augen unnötig. Mal davon abgesehen, dass du zwei oder drei Versionen bereitstellen mußt. Z.B. für Windows, Mac, Linux/Unix.


> 2. Die lokale cmd.exe mit Kommands aufrufen, was
> aus Sicherheitsgründen bei mir noch nicht
> funktioniert hat.

Meiner Meinung nach ist dies Möglich. Dazu schreibst du eine Serveranwendung die per URL aufgerufen werden kann und dann den die Konsole aufruft, den entsprechenden Befehl absetzt und die Ausgabe in eine Datei umleitet. Diese Datei dann auswerten und das Ergebnis an die Webseite zurück liefern (Stichwort Ajax).

Ich weiß das dies mit Java und VBscript machbar ist. Wie es mit Php weiß ich nicht; ich meine jedoch auch.



Re: Ping Abfrage von Webseite im Intranet

Autor: T.Jung
Datum: 17.10.2012 11:40:31

> Jetzt würde ich gerne ein Button hinter die IP
> Adresse stellen, mit dem ein Ping auf die
> jeweilige Adresse aufgerufen wird um zu Prüfen ob
> der Rechner überhaupt noch exisitert bzw.
> angeschaltet ist.
> (...)
> Und 3. das ich wie bei einer Prüfung ob der
> Server erreichbar ist, das Ganze mit PHP bzw. JS
> umsetzen.

Ob ein Server erreichbar ist oder nicht, kannst Du in PHP per fsockopen() prüfen, siehe hier:
http://www.darian-brown.com/php-ping-script-to-check-remote-server-or-website/

Dort wird auch noch eine zweite Möglichkeit mittels exec() aufgeführt, bei dem tatsächlich ein Ping abgesetzt wird. Dieses Kommando steht in vielen PHP-Umgebungen aus Sicherheitsgründen allerdings nicht zur Verfügung. Du sprichst ja von einem Intranet, also kannst Du exec() u.U. freischalten lassen, ansonsten bleibt halt nur die fsockopen()-Variante.

HTH,
Tobias



Re: Ping Abfrage von Webseite im Intranet

Autor: laza86
Datum: 23.10.2012 09:38:01

Also habe das Ganze jetzt lösen können.

Da ich nicht nur Pingen, sondern auch die Namensauflösung in meiner Windows Domäne haben möchte (Ping -a xxx), habe ich mir den Script so angepasst, das ich Ihn auf einen Windows Webserver legen kann und er mir wie die normale Ping Funktion ein Ergebnis ausgibt.

Will euch diesen Script natürlich nicht vorenthalten ;)

Rückmeldung wären schön!




<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="content-language" content="de" />
<meta http-equiv="imagetoolbar" content="no" />

<title>Ping</title>

</head>
<body bgcolor="#000000">

<div style="color:#fff; font-family:'Courier New',Times,serif; font-weight:bold; font-size:14px;">

<?php


   $count  = 1;
   $host   = $_GET['host'];

$host= preg_replace ("/[^A-Za-z0-9.-]/","",$host);
  
$output = array();
exec("ping -n $count -a $host", $output);  
//$output = system("ping -a -n $count $host");

foreach($output as $line)
{

$line = iconv('CP850', 'ISO-8859-1', $line);

$line = eregi_replace("Antwort", "<span style="color:green; font-size:18px;">Antwort", $line);
$line = eregi_replace("Ping-Statistik", "</span>Ping-Statistik", $line);

$line = eregi_replace("Zeitüberschreitung", "<span style="color:red; font-size:18px;">Zeitüberschreitung", $line);
$line = eregi_replace("Ping-Statistik", "</span>Ping-Statistik", $line);

echo $line;

echo "<br />";
}  

?>

</div>

</body>
</html>






Bei Fragen, einfach melden. Gruß laza



Re: Ping Abfrage von Webseite im Intranet

Autor: T.Jung
Datum: 23.10.2012 11:50:02

> Also habe das Ganze jetzt lösen können.
> (...)
> Will euch diesen Script natürlich nicht
> vorenthalten ;)

Schön, Danke!
Es passiert ja leider viel zu oft, dass der Threaderöffner sich nicht mehr meldet, wenn die Lösung gefunden wurde.


> Rückmeldung wären schön!

Nun, solange exec() auf dem fraglichen Server erlaubt ist, gibt es an dem Script meiner Meinung nach nur eine Kleinigkeit zu »meckern«:

> $line = eregi_replace("Antwort", "<span
> style="color:green; font-size:18px;">Antwort",
> $line);
> (...)

Die ereg-Funktionen sind seit PHP 5.3.0 als »deprecated« gekennzeichnet und ursprünglich war geplant, dass sie in PHP 6 komplett rausfliegen. Auch wenn PHP 6 vorerst auf Eis gelegt wurde und die Zukunft daher derzeit etwas ungewiss erscheint, würde ich diese Funktionen nicht mehr nutzen.

Normalerweise soll man statt dessen die preg-Funktionen nutzen. In Deinem Fall aber besteht aber kein Grund, überhaupt eine Engine, die reguläre Ausdrücke bietet, zu verwenden; es reicht ein einfaches str_replace().

Gruß,
Tobias



Re: Ping Abfrage von Webseite im Intranet

Autor: laza86
Datum: 23.10.2012 13:15:11

> Schön, Danke!
> Es passiert ja leider viel zu oft, dass der
> Threaderöffner sich nicht mehr meldet, wenn die
> Lösung gefunden wurde.

Ja das kenne ich nur zu gut. Da sucht man im Internet nach Lösungen und am Ende fehlt der entscheidende Beitrag...


> Nun, solange exec() auf dem fraglichen Server
> erlaubt ist, gibt es an dem Script meiner Meinung
> nach nur eine Kleinigkeit zu »meckern«:


DA ich hier nur an einer Intranetlösung arbeite, sehe ich mit exec() eigentlich keine Probleme.

> Die ereg-Funktionen sind seit PHP 5.3.0 als
> »deprecated« gekennzeichnet und ursprünglich war
> geplant, dass sie in PHP 6 komplett rausfliegen.
> Auch wenn PHP 6 vorerst auf Eis gelegt wurde und
> die Zukunft daher derzeit etwas ungewiss
> erscheint, würde ich diese Funktionen nicht mehr
> nutzen.
>
> Normalerweise soll man statt dessen die
> preg-Funktionen nutzen. In Deinem Fall aber
> besteht aber kein Grund, überhaupt eine Engine,
> die reguläre Ausdrücke bietet, zu verwenden; es
> reicht ein einfaches str_replace().

Das mit ereg wusste ich zwar noch nicht, aber da hast du natürlich recht, hier reicht ein replace aus. Hier die abgeänderte Version:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="content-language" content="de" />
<meta http-equiv="imagetoolbar" content="no" />

<title>Der EDV Journalist - Ping</title>

</head>
<body bgcolor="#000000">

<div style="color:#fff; font-family:'Courier New',Times,serif; font-weight:bold; font-size:14px;">

<?php


   $count  = 1;
   $host   = $_GET['host'];

$host= preg_replace ("/[^A-Za-z0-9.-]/","",$host);
  
$output = array();
exec("ping -n $count -a $host", $output);  

foreach($output as $line)
{

$line = iconv('CP850', 'ISO-8859-1', $line);

$line = str_replace('Antwort', '<span style="color:green; font-size:18px;">Antwort', $line);
$line = str_replace('Ping-Statistik', '</span>Ping-Statistik', $line);


$line = str_replace('Zeitüberschreitung', '<span style="color:red; font-size:18px;">Zeitüberschreitung', $line);
$line = str_replace('Ping-Statistik', '</span>Ping-Statistik', $line);

echo $line;

echo "<br />n";
}  

?>

</div>

</body>
</html>



IP Adressen anpassen für Ping Abfrage

Autor: laza86
Datum: 23.10.2012 14:24:36

-> Diesen Beitrag ggf. ins Unterforum PHP verschieben <-

So wer hät`s gedacht, ganz so wie ich dachte geht der Ping Befehl nicht mit den IP Adressen um…

Meine IP Adressen sehen z.B.  so aus:
http://192.168.0.005 oder http://192.168.010.050

Leider kann der Windows Ping nur mit IP Adressen ohne Nullen nach dem Punkt umgehen, also:
http://192.168.0.5 oder http://192.168.10.50

Jetzt bräuchte ich ein preg_match oder ähnliches, der genau diese Umwandlung der IP Adressen erledigt.

Leider komm ich mit der Syntax von preg_match nicht wirklich klar.

Kann mir hierbei einer helfen?

Danke & Gruß laza



Re: IP Adressen anpassen für Ping Abfrage

Autor: laza86
Datum: 24.10.2012 08:30:06

> -> Diesen Beitrag ggf. ins Unterforum PHP
> verschieben <-
>
> So wer hät`s gedacht, ganz so wie ich dachte geht
> der Ping Befehl nicht mit den IP Adressen um…
>
> Meine IP Adressen sehen z.B.  so aus:
> http://192.168.0.005 oder http://192.168.010.050
>
> Leider kann der Windows Ping nur mit IP Adressen
> ohne Nullen nach dem Punkt umgehen, also:
> http://192.168.0.5 oder http://192.168.10.50
>
> Jetzt bräuchte ich ein preg_match oder ähnliches,
> der genau diese Umwandlung der IP Adressen
> erledigt.
>
> Leider komm ich mit der Syntax von preg_match
> nicht wirklich klar.

Habs nun mit zwei simplen str_replace`s gemacht:

$host = str_replace('.0', '.', $host);
$host = str_replace('.00', '.', $host);

Gruß
laza