Foros del Web » Programando para Internet » PHP »

Ping con php

Estas en el tema de Ping con php en el foro de PHP en Foros del Web. Hola ... les cuento de que se trata, estoy haciendo una pagina web en donde se tiene que hacer multiples ping, para esto estoy utlizando ...
  #1 (permalink)  
Antiguo 25/04/2008, 11:55
 
Fecha de Ingreso: abril-2008
Mensajes: 21
Antigüedad: 16 años
Puntos: 0
Exclamación Ping con php

Hola ... les cuento de que se trata, estoy haciendo una pagina web en donde se tiene que hacer multiples ping, para esto estoy utlizando la funcion system, al parecer si se hacen los ping, pero lo que no quiero es que se imprima la respuesta .. no se si haya alguna manera de que se capture en una variable si respondio la maquina o no para arrojar un aviso de que si esta activa o no.

Gracias
  #2 (permalink)  
Antiguo 25/04/2008, 15:30
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 5 meses
Puntos: 890
Re: Ping con php

Tengo algoo, a ver si te sirve
Código:
<?php
/*
 * Created on 26/04/2008
  */
  exec ("/bin/ping -c 5 www.google.com", $respuesta); 
 //tenes que saber la ruta del comando ping en tu server
  echo "<pre>" . join("\r\n", $respuesta)."</pre>";
?>
Esto devuelve
PING www.l.google.com (209.85.165.104) 56(84) bytes of data.
64 bytes from eo-in-f104.google.com (209.85.165.104): icmp_seq=1 ttl=246 time=205 ms
64 bytes from eo-in-f104.google.com (209.85.165.104): icmp_seq=2 ttl=246 time=202 ms
64 bytes from eo-in-f104.google.com (209.85.165.104): icmp_seq=3 ttl=246 time=201 ms
64 bytes from eo-in-f104.google.com (209.85.165.104): icmp_seq=4 ttl=246 time=203 ms
64 bytes from eo-in-f104.google.com (209.85.165.104): icmp_seq=5 ttl=246 time=203 ms

--- www.l.google.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4012ms
rtt min/avg/max/mdev = 201.406/203.090/205.172/1.256 ms

Saludos
__________________
Drupal Argentina
  #3 (permalink)  
Antiguo 25/04/2008, 16:25
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Re: Ping con php

Holas,

pero antes , usabas la funcion system, creo solo hubieras usado el signo @ que hace que los resultados que te devuelven no sean tomandos en cuenta, por lo que solo hubieras hecho esto:

@systems(......


Saludos
Gildus
__________________
.: Gildus :.
  #4 (permalink)  
Antiguo 25/04/2008, 18:01
Avatar de NUCKLEAR
Moderador radioactivo
 
Fecha de Ingreso: octubre-2005
Ubicación: Cordoba-Argentina
Mensajes: 5.688
Antigüedad: 18 años, 5 meses
Puntos: 890
Re: Ping con php

Ups, el queria que no se muestren las respuestas.....

entendi todo mal.... sorry.
Saludos
__________________
Drupal Argentina
  #5 (permalink)  
Antiguo 25/04/2008, 20:01
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 20 años, 8 meses
Puntos: 105
Re: Ping con php

Nos avisas mareli si te funciono el codigo.

Saludos
Gildus
__________________
.: Gildus :.
  #6 (permalink)  
Antiguo 28/04/2008, 07:17
 
Fecha de Ingreso: abril-2008
Mensajes: 21
Antigüedad: 16 años
Puntos: 0
Re: Ping con php

Hola ... pues he colocado el @ y sigue arrojando la respuesta de los paquetes, sera que no es posible que no se impriman ?
  #7 (permalink)  
Antiguo 28/04/2008, 09:12
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Re: Ping con php

mareli:
Creo que con esto puedes solucionar.
Utilizando el codigo que te mostro NUKLEAR que esta muy bueno,
puedes hacer lo siguiente:
Al inicio del script pone:
ob_start();
Quita esto:
echo "<pre>" . join("\r\n", $respuesta)."</pre>";
Pon esto:
$bufer = ob_get_contents();
Seguidamente:
abres un archivo y guardas la respuesta en el archivo
y en el navegador NO se vera nada.
$archivo = fopen("prueba.txt", "w+");
fwrite($archivo, $bufer);
fclose($archivo);
Al final:
ob_end_clean();
Saludos
Y espero te ayude
Franco
  #8 (permalink)  
Antiguo 29/04/2008, 13:41
 
Fecha de Ingreso: abril-2008
Mensajes: 7
Antigüedad: 16 años
Puntos: 0
Mensaje Re: Ping con php

Hola!

He estado intentando hacer lo que esta haciendo mareli, y siguiendo sus consejos, ya logre que la respesta de los paquetes este en un archivo, pero el problema que me ocasiona, que ahora no se muestra nada en la pagina, y yo mostraba las direcciones ip a las que les hacia ping.

Alguien me puede ayudar...
  #9 (permalink)  
Antiguo 29/04/2008, 20:07
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Re: Ping con php

Crist:
Creo que puedes abrir el archivo con la funcion file();
y leer la info. .
Asi podrias echo... lo que esta dentro o ser
selectivo con lo que has guardado.
Pruebalo a ver si te resulta.
Saludos
Franco
P.S. Un archivo puede estar abierto con fopen y a su vez estar
trabajando con la funcion file();.
  #10 (permalink)  
Antiguo 29/04/2008, 21:47
Avatar de MoDoRrO  
Fecha de Ingreso: septiembre-2005
Ubicación: Php+Flash+AS
Mensajes: 1.072
Antigüedad: 18 años, 7 meses
Puntos: 12
Re: Ping con php

y se puede solo mostrar el primer o el ultimo tiempo de respuesta??

ya sea capturarlo en un archivo como dice franco y despues mostrar algo asi como:
Código PHP:
echo"Tiempo de Respuesta aproximado $time"
Saludos
  #11 (permalink)  
Antiguo 09/05/2008, 11:24
 
Fecha de Ingreso: enero-2008
Mensajes: 5
Antigüedad: 16 años, 2 meses
Puntos: 0
Re: Ping con php

Cita:
Iniciado por franco190453 Ver Mensaje
mareli:
Creo que con esto puedes solucionar.
Utilizando el codigo que te mostro NUKLEAR que esta muy bueno,
puedes hacer lo siguiente:
Al inicio del script pone:
ob_start();
Quita esto:
echo "<pre>" . join("\r\n", $respuesta)."</pre>";
Pon esto:
$bufer = ob_get_contents();
Seguidamente:
abres un archivo y guardas la respuesta en el archivo
y en el navegador NO se vera nada.
$archivo = fopen("prueba.txt", "w+");
fwrite($archivo, $bufer);
fclose($archivo);
Al final:
ob_end_clean();
Saludos
Y espero te ayude
Franco
Hola Francisco, estuve probando el código que sugeriste y me queda algo asi. El problema es que prueba.txt me queda absolutamente en blanco. Me puedes dar una mano con eso?
Desde ya muchas gracias

<?php
ob_start();
exec ("ping -n 5 www.yahoo.com", $respuesta);
$bufer = ob_get_contents();
$archivo = fopen("prueba.txt", "w+");
fwrite($archivo, $bufer);
fclose($archivo);
ob_end_clean();
?>
  #12 (permalink)  
Antiguo 09/05/2008, 14:10
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Re: Ping con php

Prueba asi:
<?php
ob_start();
exec ("ping -n 5 www.yahoo.com", $respuesta);
echo "$respuesta"; //Aqui el echo como es output queda en el buffer
$bufer = ob_get_contents();
$archivo = fopen("prueba.txt", "w+");
fwrite($archivo, $bufer); //Aqui si es aplicable
fclose($archivo);
ob_end_clean();
?>
Saludos
Franco

P:S: Tambien he usado esto con exito; he trasladado
el archivo ping.exe al directorio donde esta este pequeño php.
<?php
$salida = `ping 200.60.107.197`;
$archivo = fopen("prueba.txt", "w+");
fwrite($archivo, $salida);
fclose($archivo);
?>
Nota: Fijate que el ping NO esta entrecomillas NI ' sino `

Última edición por franco190453; 09/05/2008 a las 14:22
  #13 (permalink)  
Antiguo 26/10/2008, 13:19
Avatar de MoDoRrO  
Fecha de Ingreso: septiembre-2005
Ubicación: Php+Flash+AS
Mensajes: 1.072
Antigüedad: 18 años, 7 meses
Puntos: 12
Respuesta: Ping con php

probe esto:
Código PHP:
<?php
$salida 
= `ping google.com`;
$archivo fopen("prueba.txt""w+");
fwrite($archivo$salida);
fclose($archivo);
?>
y en el .txt me guarda esto:

Código:
Haciendo ping a google.com [209.85.171.99] con 32 bytes de datos:

Respuesta desde 209.85.171.99: bytes=32 tiempo=154ms TTL=241
Respuesta desde 209.85.171.99: bytes=32 tiempo=152ms TTL=241
Respuesta desde 209.85.171.99: bytes=32 tiempo=144ms TTL=241
Respuesta desde 209.85.171.99: bytes=32 tiempo=156ms TTL=241

Estad¡sticas de ping para 209.85.171.99:
    Paquetes: enviados = 4, recibidos = 4, perdidos = 0
    (0% perdidos),
Tiempos aproximados de ida y vuelta en milisegundos:
    M¡nimo = 144ms, M ximo = 156ms, Media = 151ms
ahora, como puedo solo imprimir la MEDIA 151 por ejemplo (que es el tiempo medio de las respuestas)

Saludos
  #14 (permalink)  
Antiguo 26/10/2008, 16:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Ping con php

Lo puedes hacer usando expresiones regulares, es la forma más directa para hacerlo.

Saludos.
  #15 (permalink)  
Antiguo 26/10/2008, 22:44
Avatar de MoDoRrO  
Fecha de Ingreso: septiembre-2005
Ubicación: Php+Flash+AS
Mensajes: 1.072
Antigüedad: 18 años, 7 meses
Puntos: 12
Respuesta: Ping con php

yeah, lo e logrado!!

gracias
  #16 (permalink)  
Antiguo 27/10/2008, 09:47
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Respuesta: Ping con php

Que tal MoDoRrO, que bueno que lo solucionaste, pero si es posible publica la solución por si algún usuario se le presente la misma situación



Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"
  #17 (permalink)  
Antiguo 27/10/2008, 11:35
Avatar de MoDoRrO  
Fecha de Ingreso: septiembre-2005
Ubicación: Php+Flash+AS
Mensajes: 1.072
Antigüedad: 18 años, 7 meses
Puntos: 12
Respuesta: Ping con php

ok, pensando un poco, encontre una solucion para separar frases con expresiones regulares, tons.

Código PHP:
function sacar($TheStr$sLeft$sRight){
        
$pleft strpos($TheStr$sLeft0);
        if (
$pleft !== false){
                
$pright strpos($TheStr$sRight$pleft strlen($sLeft));
                If (
$pright !== false) {
                        return (
substr($TheStr$pleft strlen($sLeft), ($pright - ($pleft strlen($sLeft)))));
                }
        }
        return 
'';
}

$texto = `ping radiofresno.net -n 1`;
echo 
sacar($texto,"Media = ","ms");
// by Modorro, elfresno.com.mx 
este codigo, imprime la Media de una respuesta a el servidor radiofresno.net, en este caso ejemplo, 125

de ahi, pueden hacer lo que sea, desde enviarlo a un flash para que este midiendo el ping (es lo que hice yo)

Saludos
  #18 (permalink)  
Antiguo 28/10/2008, 11:11
 
Fecha de Ingreso: abril-2008
Mensajes: 21
Antigüedad: 16 años
Puntos: 0
Respuesta: Ping con php

Hola, pues en mi caso necesita saber si la direccion a la que hacia ping respodia o no y navegando me encontre este codigo que me funciono y espero que alguien mas le sirva

Código:
function ping($ips,$tip)
{

  $cmd=shell_exec("ping -n 1 -w 1 $ips");   
  $dati_mount=explode(",",$cmd);

  if (eregi ("0", $dati_mount[1], $out)) 
  {
     $connesso="<img src=\"r.png\">";
	 $imagen=tipo($tip);

  }
  if (eregi ("1", $dati_mount[1], $out)) 
  {
    $connesso="<img src=\"v2.png\">";
	  $imagen=tipo($tip);

  }

  return array($connesso,$imagen,$ips);
}
saludos
  #19 (permalink)  
Antiguo 27/12/2008, 00:54
 
Fecha de Ingreso: diciembre-2008
Mensajes: 1
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: Ping con php

Hola, soy nuevo en el foro, ingresé porque tenía la encomienda de hacer un sistemita para que mandara ping a un cierto número de equipos que guarde en un una base de datos, ya la hice ya añadí registros etc...

lo que pasa es que soy un poco nuevo en php y pues aún hay varias cosas que no comprendo.

Yo use la funcion de

shell_exec("ping $ip");

esta era la manera en la que habia estado usandolo hasta ahora que encontre que se puede hacer de igual manera con

`ping $ip`;

me llama la atención saber cual es la funcionalidad de las tildes ``
y también la funcion del @, segun tengo entendido el @ es una prueba de errores, pero quisiera saber un poco mas a fondo.

sii pueden apoyarme se los agradecere
  #20 (permalink)  
Antiguo 27/12/2008, 01:28
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Respuesta: Ping con php

Un saludo kikepan

Bienvenido al foro y a PHP. Como bienvenida, déjame hacerte notar lo bueno de estás dos herramientas.

Primero, la documentación de PHP, donde si consultas la función que estás utilizando, osea, shell_exec(), verás que al inicio, junto con su descripción, dice:
Cita:
Esta función es idéntica al operador de comillas invertidas.
Y voalá, ahí tienes tu respuesta. Cabe decir que esto no es propio de PHP, las comillas invertidas son comunes para la ejecución de programas.

Segundo, el foro y sus FAQ, donde buscando el '@' encontrarás que hay una que dice:
162. ¿Para qué sirve anteponer el arroba (@) a una sentencia?
que también debería solucionarte algunas dudas ...

Sou, espero te sirvan los enlaces y, sí tienes alguna otra duda que no te solucionen, solo menciónalo.

Un saludo
PD: Buscador, FAQ, Documentación, ¡que buenas herramientas!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 16:02.