/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
netværksstatus via php
Fra : Ukendt


Dato : 19-12-06 10:05

Hej ng.

Jeg leder efter en lille løsning til
at få præsenteret en side med
x antal hosts samt en ikon/en tekst
for om en host svarer (ping) eller ej.
jeg tænkte at php var vejen frem
men jeg har ikke fundet noget der
lige løser den for mig.
Er der nogen herinde der kender
til noget mere eller mindre færdigt
jeg kan kaste mig over?
--
Peter J



 
 
MikeyMouse (19-12-2006)
Kommentar
Fra : MikeyMouse


Dato : 19-12-06 10:58

On Tue, 19 Dec 2006 10:04:44 +0100, "Peter Jensen"
<spateldask(snabel-a)hotmail.com> wrote:

>Hej ng.
>
>Jeg leder efter en lille løsning til
>at få præsenteret en side med
>x antal hosts samt en ikon/en tekst
>for om en host svarer (ping) eller ej.
>jeg tænkte at php var vejen frem
>men jeg har ikke fundet noget der
>lige løser den for mig.
>Er der nogen herinde der kender
>til noget mere eller mindre færdigt
>jeg kan kaste mig over?

Godt nok ikke php, men prøv at kigge på nagios.

Kasper Johansen (19-12-2006)
Kommentar
Fra : Kasper Johansen


Dato : 19-12-06 11:38

Peter Jensen skrev:
> Jeg leder efter en lille løsning til
> at få præsenteret en side med
> x antal hosts samt en ikon/en tekst
> for om en host svarer (ping) eller ej.

Hej Peter.

Følgende er bare lige skrevet hurtigt og derfor ikke testet, men jeg går
ud fra, at det er noget lignende det, du leder efter:

<?
$hosts = array(
array(
"port" => 80,
"ip" => "192.168.0.100"
);
);

foreach($hosts AS $host_info){
//2 sek timeout som sidste argument.
$fp = @fsockopen($host_info[ip], $host_info[port], $err1, $err2, 2);

if ($fp){
echo $host_info[ip] . " svarer.\n";
fclose($fp);
}else{
echo $host_info[ip] . " svarer ikke.\n";
}
}
?>

Hvis du har adgang til system() eller lignende, så kan du også bare køre
en shell-ping mod IP'en, og så tyde den returnerede tekst med noget
regex (f.eks.).

--
Med venlig hilsen
Kasper Johansen

Ukendt (19-12-2006)
Kommentar
Fra : Ukendt


Dato : 19-12-06 12:11


"Kasper Johansen" <kaspernj@gmail.com> skrev
>
> Hej Peter.
>
> Følgende er bare lige skrevet hurtigt og derfor ikke testet, men jeg går
> ud fra, at det er noget lignende det, du leder efter:

Koden fejler, men det ligner noget i den retning.
Dog vil jeg gerne undgå at teste på porte, det er
ikke nødvendigvis webservere eller lignende.

> Hvis du har adgang til system() eller lignende, så kan du også bare køre
> en shell-ping mod IP'en, og så tyde den returnerede tekst med noget regex
> (f.eks.).

Du lurer på noget i retning af system("ping 1.2.3.4") ?
jeg får en CGI error, men den prøver da at losse det afsted.
I første forsøg fik jeg en fork fejl, men fandt frem til at
man på windows systemer kan kopierer cmd.exe til
det directory hvor PHP kører fra.
Men jeg famler sådan lidt i blinde, det skal der vist rodes noget
mere med



Kasper Johansen (19-12-2006)
Kommentar
Fra : Kasper Johansen


Dato : 19-12-06 12:29

Peter Jensen skrev:
> Koden fejler, men det ligner noget i den retning.
> Dog vil jeg gerne undgå at teste på porte, det er
> ikke nødvendigvis webservere eller lignende.
> ...
> Du lurer på noget i retning af system("ping 1.2.3.4") ?
> jeg får en CGI error, men den prøver da at losse det afsted.
> I første forsøg fik jeg en fork fejl, men fandt frem til at
> man på windows systemer kan kopierer cmd.exe til
> det directory hvor PHP kører fra.

Begge eksempler virker perfekt hos mig (men nu kører jeg også Linux og
ikke Windows):
<?
   ob_start();
   system("ping google.dk -c 1");
   $ping = ob_get_contents();
   ob_end_clean();
   
   if (strpos($ping, "64 bytes from") !== false){
      echo "Google svarer.\n";
   }else{
      echo "Google svarer ikke.\n";
   }
   
   
   if (@fsockopen("google.dk", 80, $err1, $err2, 2)){
      echo "Google svarer igen.\n";
   }else{
      echo "Google svarer ikke igen.\n";
   }
?>


Men jeg fik da også engang noget lignende oppe på en Windows-span, så
mon ikke også, at det lykkedes for dig

Held og lykke her fra i hvert fald


--
Med venlig hilsen
Kasper Johansen, knj

Bertel Lund Hansen (19-12-2006)
Kommentar
Fra : Bertel Lund Hansen


Dato : 19-12-06 12:48

Peter Jensen skrev:

> Koden fejler,

Udskift første semikolon med et komma i:

$hosts = array(
array(
"port" => 80,
"ip" => "192.168.0.100"
);
);

Kommaet kan også undværes, men jeg sætter det altid. Det er en
fordel hvis man senere vil udvide arrayet og/eller man vil flytte
om på rækkefølgen.

Derfor sætter jeg også komma efter
   "ip" => "192.168.0.100"
men det er heller ikke nødvendigt.

--
Bertel
http://bertel.lundhansen.dk/      http://fiduso.dk/

Ukendt (19-12-2006)
Kommentar
Fra : Ukendt


Dato : 19-12-06 13:09


"Bertel Lund Hansen" <unospamo@lundhansen.dk> skrev
> Udskift første semikolon med et komma i:

Takker, det gav da noget i hvert fald.
[ip] skal dog erstattes med ['ip'] her hos mig
ellers får jeg en fejl.

OK, det ligner da noget. Men det er nok
desværre en anden løsning jeg skal bruge
da jeg nok ikke kan finde sådanne porte
at teste på på alle hosts. Nogle af dem
er routere som jeg umiddelbart kun har
mulighed for at pinge er jeg bange for.

Nå, men om ikke andet så kan det her
da bruges til at andet lille projekt jeg
har kørende

--
Peter J



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408849
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste