Zona HTML Zona Java Zona PHP Zona ASP Zona Bases de datos
Inicio > Foros > PHP > Scripts hosts activos, en linea.
-Foros de debate

PHP
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

Scripts hosts activos, en linea.
Enviado por Andrés Bjou el día 13 de julio de 2005

Estoy haciendo un script que dados una serie de hosts, te diga si este host se encuentra online o en caso contrario offline, lo he estado haciendo con sockets, ya que ha sido la unica forma que se me ha ocurrido, pero no he conseguido llegar a nada, no me da siempre resultados correctos pero alguna vez ha funcionado correctamente :S

El script que llevo por el momento es este :

(Los datos de los hosts se encuentran en una matriz $maquinas que a su vez esta en el fichero datos.php por su larga extension)

function onlineAll() {
include_once("datos.php");

$port=5800;
$timer=0.01;
$num=count($maquinas);
$on=0;
$off=0;

for ($i=0;$i<$num-1;$i++) {
$ip=$maquinas[$i]["ip"];
$conection = fsockopen($ip, $port, &$errno, &$errstr, $timer);
if (!$conection) {
$off++;
echo "<strong><font color=#FF0000>[Offline]</font> -> </strong>".$maquinas[$i]["nom"]." [".$ip."] ... ";
echo "$errstr ($errno)<br />\n";
unset($conection);
} else {
$on++;
echo "<strong>[Online] -> </strong>".$maquinas[$i]["nom"]." [".$ip."]<br>";
fclose($conection);
}
}
}

Haber si alguien consigue solucionarme porque coño no funciona este script, o me da alguna forma alternativa de conseguir lo que quiero.

Gracias de antemano.

 
Re: Scripts hosts activos, en linea.
Enviado por tgp el día 14 de julio de 2005

Tenes acceso a los host? si es asi yo hago algo similar con este procedimiento:

$ip = "192.168.1.106"
$servidor = @include 'http://192.168.1.106/unarchivo.php';
if(!$servidor)
{
$control = mysql_db_query("$DBName","insert into servidores (servidor,activo)
values('$ip','0')");
}
if($servidor)
{
$control = mysql_db_query("$DBName","insert into servidores (servidor,activo)
values('$ip','1')");
}


solo que como yo solo verifico la conexion a un servidor la ip es estatica por eso te puse la variable $ip al principio pero no se si se puede insertar dentro del include.... yo digo que talvez si... el proceso se lleva unos pocos segundos y el include lleva un signo de @ para que no te marque error si el servidor no esta disponible, lo que quisiera hacer es poner un tiempo maximo de prueba de conexion pero no se como.. si lo haces me lo envias por correo o lo posteas

saludos

 
Re: Re: Scripts hosts activos, en linea.
Enviado por Andres Bou el día 14 de julio de 2005

El problema es que yo no tengo acceso a los hosts de la manera http://host ..... por eso me voy por los sockets, pero nose porque no me chuta :( :(

Algun crack de php and sockets, k responda . ... jsjsjs ;)

 
Re: Re: Re: Scripts hosts activos, en linea.
Enviado por tgp el día 14 de julio de 2005

Una pregunta por que te vas por el puerto 580? no es mas facil verificar el puerto 80? ya que no todos tienen abierto los puertos y si hay un firewall te marcara que esta inactivo

 
Re: Re: Re: Re: Scripts hosts activos, en linea.
Enviado por tgp el día 14 de julio de 2005

Talvez este te sirve dependiendo de lo que querras hacer :) eso si yo lo probe en hice en wind*s y funciona rebien pero en linux no se


$ip = "192.168.1.104"; // aqui podes usar ip o www.dominio.com
$cadena = "ping $ip";
@exec($cadena,$array,$ret);
echo "<table>";
foreach($array as $valor)
{ echo "<tr><td>";
print "$array[$i] &nbsp;&nbsp;<BR>";
$i++;
echo "</td></tr>";
}
echo "<tr><td>";
if ($ret == 1)
{
echo "<FONT FACE=\"Arial\" COLOR=\"#FF0000\" SIZE=\"+1\"><B>Servidor inactivo: $ip</B></FONT>";
}
if ($ret == 0)
{
echo "<FONT FACE=\"Arial\" COLOR=\"#00BF00\" SIZE=\"+1\"><B>Servidor activo: $ip</B></FONT>";
}
echo "</td></tr>";
echo "</table>";


saludos

 
Re: Re: Re: Re: Re: Scripts hosts activos, en linea.
Enviado por Andrés Bou el día 15 de julio de 2005

Si, creo que ejectuando el ping, me servira, ya que solamente quiero saber si esta online o offline.

Pero no acabo de entender que es lo que se guarda en las variables $array i $ret , ..... i la variable $i donde esta inicializada?

No lo he probado pero si dices que va bien el lunes lo probare, ... agradeceria que me respondieras las dudas que he comentado, gracias.

 


Re: Re: Re: Re: Scripts hosts activos, en linea.
Enviado por Andrés Bou el día 15 de julio de 2005

Lo hago por el puerto 5800 porque es el puerto que utiliza un programa llamado VNC para conectarte a maquinas remotamente, .... la question es que todas las maquinas tienen el vnc instalado y consecuentemente el puerto abierto.

Por eso no me influira para nada probar con el 80.

 
Re: Re: Re: Re: Re: Scripts hosts activos, en linea.
Enviado por tgp el día 16 de julio de 2005

jejeje... la variable $i no la inicialice, ahora bien $array guarda los elementos devueltos por el ping... creo que no te sirven pero lo puse solo para que tuvieras la referencia y $ret guarda el valor de 1 o 0 dependiendo si esta activo o no el servidor... ahora bien la ventaja de usar ping es que no utiliza ningun puerto especifico solo prueba la conexion

saludos

 
Re: Re: Re: Re: Re: Re: Scripts hosts activos, en linea.
Enviado por Andrés Bou el día 18 de julio de 2005

Por fin !!!!!!!!!!!!!!

Je je je ,, ... ya he logrado conseguir lo que queria, al final he modificao un par de cosillas y la funcion a quedado asin :

 
Re: Re: Re: Re: Re: Re: Re: Scripts hosts activos, en linea.
Enviado por Andres Bou el día 18 de julio de 2005

Continuacion .....


function ping($ip) {
include_once("datos.php");
$cadena = "ping -n 1 -l 1 -w 0.1 ".$ip;
@exec($cadena,$array,$ret);

if ($array[3][0]=="T") return false;
else return true;
}

Simplemente son un par de modificaciones en la llamada del ping para que acabe antes i eso

Merci por todo tgp

 







Re: Scripts hosts activos, en linea.
Enviado por rargueso el día 18 de julio de 2005

Esto era correcto, lo unico que falla es el tiempo que le das al socket. Es demasiado bajo

 

Re: Scripts hosts activos, en linea.
Enviado por gusalgora el día 27 de junio de 2006

/*La variable ip_new la tengo funcionando en una consulta de mysql si quieres la puedes cambiar por la ip que quieras*/
<?
$fp = fsockopen(\"tcp://$ip_new\", 5800, $errno, $errstr, 0.5);
if (!$fp)
echo \"<img src=\'imagenes/offline.gif\'><h4>$ip_new SIN LINEA</H4>\";
else {
echo \"<img src=\'imagenes/online.gif\'><H4>$ip_new EN LINEA</H4>\";
}
fclose($fp);
?>

 

Re: Scripts hosts activos, en linea.
Enviado por gusalgora el día 27 de junio de 2006

La variable ip_new la tengo funcionando en una consulta de mysql si quieres la puedes cambiar por la ip que quieras
<?
$fp = fsockopen(\'tcp://$ip_new\', 5800, $errno, $errstr, 0.5);
if (!$fp)
echo \"<img src=\'imagenes/offline.gif\'><h4>$ip_new SIN LINEA</H4>\";
else {
echo \"<img src=\'imagenes/online.gif\'><H4>$ip_new EN LINEA</H4>\";
}
fclose($fp);
?>

 


Tienda
Patrocinados
 

Copyright © 1999-2006 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad

Hospedaje web y servidores dedicados linux por Ferca Network