es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Creando un panel de control que muestra una lista de direcciones IP con latencia.

Estoy tratando de hacer una página en PHP y HTML que haga ping a una lista de IP’s en un archivo llamado ips.txt y lo muestre en una bonita página HTML/PHP en el siguiente formato:

IP - Latencia

Y no tengo ni idea de cómo abordar este problema. Podría hacer ping a cada IP, pero ¿cómo mostraría esos datos? ¿Y cómo los formatearía? Podría usar exec(), pero no tengo ni idea. Si alguien sabe alguna manera inteligente de hacerlo y pudiera orientarme en la dirección correcta, sería genial.

Gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución para hacer ping a IPs y mostrar los resultados en una página HTML/PHP

    Introducción

    Si deseas crear una página en PHP y HTML que haga ping a una lista de IPs en un archivo llamado ips.txt y mostrar los resultados en una página HTML/PHP en el formato “IP – Latencia”, puedes seguir los siguientes pasos:

    1. Leer el archivo ips.txt utilizando file_get_contents() u otra función de lectura de archivos.
    2. Extraer la lista de IPs del archivo ips.txt y almacenarla en un array utilizando explode() u otra función de procesamiento de cadenas.
    3. Recorrer el array de IPs y hacer ping a cada IP utilizando exec() u otra función de ejecución de comandos de shell.
    4. Capturar los resultados del ping para cada IP y analizarlos para extraer el valor de latencia.
    5. Almacenar la IP y el valor de latencia en un array asociativo de PHP u otra estructura de datos de tu elección.
    6. Utilizando HTML/PHP, recorrer la estructura de datos y mostrar las IPs y sus respectivas latencias en el formato deseado.

    Implementación

    Aquí tienes un código de ejemplo que implementa los pasos anteriores:

    <?php
    
    // Paso 1: Leer el archivo ips.txt
    $contenido = file_get_contents('ips.txt');
    
    // Paso 2: Extraer la lista de IPs y almacenarla en un array
    $ips = explode("\n", $contenido);
    
    // Paso 3: Recorrer las IPs y hacer ping a cada IP
    $resultados = array();
    foreach ($ips as $ip) {
        // Paso 4: Capturar los resultados del ping y analizar el valor de latencia
        if (stristr(PHP_OS, 'WIN')) {
            // Para Windows
            exec("ping -n 1 -w 500 $ip", $output, $status);
            $latencia = explode("time=", $output[2]);
            $latencia = explode("ms", $latencia[1])[0];
        } else {
            // Para Linux/Mac
            exec("ping -c 1 -W 500 $ip", $output, $status);
            $latencia = explode("time=", $output[1]);
            $latencia = explode("ms", $latencia[1])[0];
        }
    
        // Paso 5: Almacenar la IP y el valor de latencia en un array asociativo
        $resultados[$ip] = $latencia;
    }
    
    // Paso 6: Mostrar los resultados en una página HTML/PHP
    echo "<table>";
    echo "<tr><th>IP</th><th>Latencia</th></tr>";
    foreach ($resultados as $ip => $latencia) {
        echo "<tr><td>$ip</td><td>$latencia</td></tr>";
    }
    echo "";
    
    ?>
    

    Conclusión

    Con la implementación anterior, deberías poder hacer ping a una lista de IPs y mostrar los resultados en una página HTML/PHP en el formato deseado. Puedes modificar el código según tus necesidades, como cambiar el formato de salida, agregar manejo de errores, etc.

Comments are closed.