viernes, 23 de junio de 2017

Script en PHP para monitorear varios equipos

En mi trabajo era necesario verificar constantemente la conectividad de varios equipos de la red, en su mayorìa dispositivos inalàmbricos con el fin de conocer el estatus de cada uno de ellos, esta tarea se volvìa tediosa ya que el mètodo que usabamos era haciendo ping (muchos van a comentar que el ping es un tema de seguridad, etc, pero en una red interna definiendo las reglas adecuadamente se evitan cosas como el ping de la muerte, etc), muchas veces no recordaba cual era la ip a revisar, en vista de ello investigué un poco en la red, y estudiando un poco más el tema diseñé algo que quizás pueda servirles.

El código está hecho en PHP, puede ser usado en Linux o Windows (Al final detallo un ligero cambio en la funcion "hacerping" si vas a usarlo en Windows), se usa básicamente el comando ping para este script, obviamente debes tener permisos en tu servidor de php para poder hacerlo, las configuraciones están en la red y no es el tema, si desean ayuda puedo guiarlos, solo dejen el comentario. sin más preámbulos:

Pasos a Seguir:

1) Tener un servidor con servicios de Apache (O cualquier otro servidor Web, solo lo he probado con apache 2)

2) Librerías php5 para para Apache 2

3) Creen una carpeta para colocar el script, dentro de ella creas otra llamada imagenes, puedes revisar el código y colocar los archivos de imagenes que mas te gusten.

3) Código:
Solo debes colocar las direcciones ip a las que deseas hacer el monitoreo, en mi caso hay 12, las
agrupo en 2 bloques, en la parte superior los accesos a la red pública, y en la parte inferior los dispositivos locales. La ip de Internet es cualquier IP Pública que permita ping

// Inicio del Código
<?php
//Para Acceso a Internet y Equipos en la Sala de telematica
$ipinternet = "104.23.136.14";
$iprouter = "IP Del Router hacia Internet, es el equipo más extremo a la red";
$ipinformatica = "Ip que desees Evaluar";
$ipproxy = "Ip que desees Evaluar";
echo '<font size="18" face="Arial">';
echo '<font color="000000">';

//Para Monitoreo de los radio del Campus Universitario

$almaserver = "Ip que desees Evaluar";
$almacliente = "Ip que desees Evaluar";
$produccion = "Ip que desees Evaluar";
$pnfserver = "Ip que desees Evaluar";
$pnfcliente = "Ip que desees Evaluar";
$electricidadserver = "Ip que desees Evaluar";
$chuito = "Ip que desees Evaluar";
$agustin = "Ip que desees Evaluar";

function hacerPing($ip) {
$str = exec("ping -c 1 -w 1 $ip", $res, $ret);
    if ($ret == 0) {
        return true;
    }
    return false;
}

if (hacerPing($ipproxy)=== true) {
    $estatusproxy= "<img src='imagenes/arriba.jpg' 'width=40 height=40'><br>";
} else {
    $estatusproxy= "<img src='imagenes/abajo.jpg' 'width=40 height=40'><br>";
}

if (hacerPing($ipinformatica)=== true) {
    $estatusgateway= "<img src='imagenes/arriba.jpg' 'width=40 height=40'><br>";
$gateway=1;
} else {
$gateway=0;
$estatusinternet= "<img src='imagenes/abajo.jpg' 'width=40 height=40'><br>";
$estatusrouter= "<img src='imagenes/abajo.jpg' 'width=40 height=40'><br>";
    $estatusgateway= "<img src='imagenes/abajo.jpg' 'width=40 height=40'><br>";
}
if ($gateway==1)
{

if (hacerPing($iprouter)=== true) {
    $estatusrouter ="<img src='imagenes/arriba.jpg' 'width=40 height=40'><br>";
} else {
    $estatusrouter= "<img src='imagenes/abajo.jpg' 'width=40 height=40'><br>";
}

if (hacerPing($ipinternet)=== true) {
    $estatusinternet= "<img src='imagenes/arriba.jpg' 'width=40 height=40'><br>";
} else {
    $estatusinternet=  "<img src='imagenes/abajo.jpg' 'width=40 height=40'><br>";
}
}

echo "
<table border='0>
<table style='width:800px; height: 125px;' border='1'>
<style>
table.roundedCorners {
  border: 1px solid DarkOrange;
  border-radius: 13px;
  border-spacing: 0;
  }
table.roundedCorners td,
table.roundedCorners th {
  border-bottom: 1px solid DarkOrange;
  padding: 3px;
  }
table.roundedCorners tr:last-child > td {
  border-bottom: none;
}
</style>
<table class='roundedCorners'>
<tbody>
<tr>
<td><b>Red de Monitoreo Red de Informatica</b></td>
</tr>
</tbody>
</table>
<tr></tr>

<table border='1>
<table style='width:800px; height: 125px;' border='1'>
<table class='roundedCorners'>
<tbody>
<tr>
<td style='width: 189px';><b>Descripcion&nbsp;</td>
<td style='width: 115px;'align='center'><b>Estatus</td>
<td style='width: 66px;'align='center'><b>Ref&nbsp;</b></td>
<td></td>
<td style='width: 189px';><b>Descripcion&nbsp;</td>
<td style='width: 115px;'align='center'><b>Estatus</td>
<td style='width: 66px;'align='center'><b>Ref&nbsp;</b></td>
</tr>

<tr>
<td style='width: 189px;'>&nbsp;Proxy de Inform&aacute;tica</td>
<td style='width: 115px;'align='center'>"; echo $estatusproxy; echo"</td>
<td style='width: 66px;' align='center' >"; echo "<img src='imagenes/proxy.jpg' 'width=60 height=60'>"; echo"</td>
<td></td>
<td style='width: 189px;'>&nbsp;Gateway de Informatica</td>
<td style='width: 115px;'align='center'>"; echo $estatusgateway; echo"</td>
<td style='width: 66px;' align='center'>"; echo "<img src='imagenes/gateway2.jpg' 'width=49 height=49' >"; echo "</td>
</tr>
<tr>
<td style='width: 189px;'>&nbsp;Router de la Universidad</td>
<td style='width: 115px;'align='center'>"; echo $estatusrouter; echo"</td>
<td style='width: 66px;' align='center'>"; echo "<img src='imagenes/router.jpg' 'width=60 height=60'>"; echo "</td>
<td> <font size='3' color='white'>-----------</td>
<td style='width: 189px;'>&nbsp;Acceso de CANTV</td>
<td style='width: 115px;'align='center'>"; echo $estatusinternet; echo"</td>
<td style='width: 66px;' align='center'>"; echo "<img src='imagenes/internet.jpg' 'width=80 height=80'>"; echo "</td>
</tr>
</tbody>
</table>
";


if (hacerPing($almaserver)=== true) {
    $almaserver= "<img src='imagenes/arriba.jpg' 'width=40 height=40'><br>";
} else {
    $almaserver= "<img src='imagenes/abajo.jpg' 'width=40 height=40'><br>";
}

if (hacerPing($almacliente)=== true) {
    $almacliente= "<img src='imagenes/arriba.jpg' 'width=40 height=40'><br>";
} else {
    $almacliente= "<img src='imagenes/abajo.jpg' 'width=40 height=40'><br>";
}

if (hacerPing($produccion)=== true) {
    $produccion= "<img src='imagenes/arriba.jpg' 'width=40 height=40'><br>";
} else {
    $produccion= "<img src='imagenes/abajo.jpg' 'width=40 height=40'><br>";
}

if (hacerPing($pnfserver)=== true) {
    $pnfserver= "<img src='imagenes/arriba.jpg' 'width=40 height=40'><br>";
} else {
    $pnfserver= "<img src='imagenes/abajo.jpg' 'width=40 height=40'><br>";
}

if (hacerPing($pnfcliente)=== true) {
    $pnfcliente= "<img src='imagenes/arriba.jpg' 'width=40 height=40'><br>";
} else {
    $pnfcliente= "<img src='imagenes/abajo.jpg' 'width=40 height=40'><br>";
}

if (hacerPing($electricidadserver)=== true) {
    $electricidadserver= "<img src='imagenes/arriba.jpg' 'width=40 height=40'><br>";
} else {
    $electricidadserver= "<img src='imagenes/abajo.jpg' 'width=40 height=40'><br>";
}

if (hacerPing($chuito)=== true) {
    $chuito= "<img src='imagenes/arriba.jpg' 'width=40 height=40'><br>";
} else {
    $chuito= "<img src='imagenes/abajo.jpg' 'width=40 height=40'><br>";
}

if (hacerPing($agustin)=== true) {
    $agustin= "<img src='imagenes/arriba.jpg' 'width=40 height=40'><br>";
} else {
    $agustin= "<img src='imagenes/abajo.jpg' 'width=40 height=40'><br>";
}


//
echo "
<style>
table.roundedCorners {
  border: 1px solid DarkOrange;
  border-radius: 13px;
  border-spacing: 0;
  }
table.roundedCorners td,
table.roundedCorners th {
  border-bottom: 1px solid DarkOrange;
  padding: 3px;
  }
table.roundedCorners tr:last-child > td {
  border-bottom: none;
}
</style>


<table border='0>
<table style='width:800px; height: 125px;' border='1' border: 1px solid orange;>
<table class='roundedCorners'>
<tbody>
</br>
<tr>
<td><b>Red de Monitoreo Nodos Wireless</b></td>
</tr>
</tbody>
</table>
<tr></tr>
<table border='1>
<table style='width:800px; height: 125px;' border='1'>
<table class='roundedCorners'>
<tbody>
<tr>
<td style='width: 189px';><b>Descripcion&nbsp;</td>
<td style='width: 115px;'align='center'><b>Estatus</td>
<td style='width: 66px;'align='center'><b>Ref&nbsp;</b></td>
<td></td>
<td style='width: 189px';><b>Descripcion&nbsp;</td>
<td style='width: 115px;'align='center'><b>Estatus</td>
<td style='width: 66px;'align='center'><b>Ref&nbsp;</b></td>
</tr>

<tr>
<td style='width: 189px;'>&nbsp;Alma Mater (Servidor)</td>
<td style='width: 115px;'align='center'>"; echo $almaserver; echo"</td>
<td style='width: 66px;' align='center' >"; echo "<img src='imagenes/radio-server.jpg' 'width=60 height=60'>"; echo"</td>
<td> <font size='3' color='white'>-----------</td>
<td style='width: 189px;'>&nbsp;Alma Mater (Cliente)</td>
<td style='width: 115px;'align='center'>"; echo $almacliente; echo"</td>
<td style='width: 66px;' align='center'>"; echo "<img src='imagenes/radio-server.jpg' 'width=60 height=60' >"; echo "</td>
</tr>

<tr>
<td style='width: 189px;'>&nbsp;PNF (Server)</td>
<td style='width: 115px;'align='center'>"; echo $pnfserver; echo"</td>
<td style='width: 66px;' align='center'>"; echo "<img src='imagenes/radio-server.jpg' 'width=60 height=60'>"; echo "</td>
<td> <font size='3' color='white'>-----------</td>
<td style='width: 189px;'>&nbsp;PNF (Cliente)</td>
<td style='width: 115px;'align='center'>"; echo $pnfcliente; echo"</td>
<td style='width: 66px;' align='center'>"; echo "<img src='imagenes/pnfcliente.jpg' 'width=60 height=60'>"; echo "</td>
</tr>
<tr>
<td style='width: 189px;'>&nbsp;Electricidad (Server)</td>
<td style='width: 115px;'align='center'>"; echo $electricidadserver; echo"</td>
<td style='width: 66px;' align='center'>"; echo "<img src='imagenes/radio-server.jpg' 'width=60 height=60'>"; echo "</td>
<td> <font size='3' color='white'>-----------</td>
<td style='width: 189px;'>&nbsp;Electricidad (Taller)</td>
<td style='width: 115px;'align='center'>"; echo $chuito; echo"</td>
<td style='width: 66px;' align='center'>"; echo "<img src='imagenes/radio-server.jpg' 'width=60 height=60'>"; echo "</td>
</tr>
<tr>
<td style='width: 189px;'>&nbsp;Electricidad (Cubiculos)</td>
<td style='width: 115px;'align='center'>"; echo $agustin; echo"</td>
<td style='width: 66px;' align='center'>"; echo "<img src='imagenes/radio-server.jpg' 'width=60 height=60'>"; echo "</td>
<td> <font size='3' color='white'>-----------</td>
<td style='width: 189px;'>&nbsp;Taller de Produccion la Sabana</td>
<td style='width: 115px;'align='center'>"; echo $produccion; echo"</td>
<td style='width: 66px;' align='center'>"; echo "<img src='imagenes/radio-server.jpg' 'width=60 height=60'>"; echo "</td>

</tr>
</tr>

</tbody>
</table>

";
/////

En el caso de que tu servicio web esté en un equipo con Windows, debes sustituir en la función  hacer ping en sus parámetros la opción "-c" por la opción "-n", es decir que quedaría así:




function hacerPing($ip) {
$str = exec("ping -n 1 -w 1000 $ip", $res, $ret);
    if ($ret == 0) {
        return true;
    } 
    return false;
}

Como (según percibo) el tiempo de respuesta del ping en Windows pareciera ser un poco más lento, modifico los parámetros para no obtener de buenas a primeras respuestas negativas, incrementando en 1000 la opción "w"que no es más que el tiempo de espera para dar respuesta en milisegundos.

Quizás piensen que el código es complejo y no es así, solo copien y peguen y sustituyan a las ip de ustedes, si son pocas la ip que necesitan monitorear solo eliminen las que no necesiten y editen las entradas en html para lo que necesitan, si eres muy novato en esto, deja solo las ip que te interesan y las otras las pones en blanco, es decir, borras las ip, algo asi como por ejemplo:
$almaserver = "";
$almacliente = "";
$produccion = "";
$pnfserver = "";
$pnfcliente = "";
$electricidadserver = "";
$chuito = "";
$agustin = "";

claro está que si lo hacen así van a ver algunos errores, en todo caso practica y corrige poco a poco.

Muestra real del código
Aquí pueden apreciar como 2 equipos estás desconectados posiblemente están apagados o hay algún error de enlace o de hardware en los radios, es tarea de verificarlos. pero de manera rápida y efectiva se puede visualizar el comportamiento de nuestros nodos de interconexión.

Si crean un archivo php (en mi caso se llama "estatus.php" sin la carpeta imagenes van a tener un resultado poco visual, los invito a que busquen imagenes que les agraden y las mencionan en los comentarios!!! Pero si les gusta esta imagenes pueden descargar las que usé y colocándola dentro de una carpeta llamada "imagenes":-)

Para los que se les complica un poco la cosa aqui les dejo el enlace https://goo.gl/rmaVR6 para que descarguen la carpeta con el código y las imágenes.

La fuente original de mi investigación proviene de: https://stackoverflow.com/questions/9841635/how-can-i-ping-a-server-port-with-php


Espero les guste.




jueves, 17 de marzo de 2016

Cruz con Leds

Saludos nuevamente, estuve buscando en algunos sitios y creo que tratar de hacer un circuito con 136 leds a una toma de 120volts me podia salir un poco costoso por el uso de los capacitores, en fin hice esto, hice 17 circuitos a 8 leds caa uno, utilizandouna resistencia de 360ohms y un transformador de 32Volts. Este proyecto ya lo culminé y creo que quedó aceptable, era un proyecto para mi esposa de una cruz para semana santa. pueden ver el link del resultado aqui. :






Espero les haya gustado.

lunes, 18 de marzo de 2013

FTA Intelsat 805 55.5° W con plato de 60 cms Banda KU spot para Norte de America del Sur


Saludos queridos amigos, les traigo varios tips para posicionar tu antena de 60 cms hacia el satélite Intelsat 805, como muchos de Uds. saben, este satélite en casi su totalidad tiene sus frecuencias en Banda C, pero tiene en Banda Ku frecuencias para señales de datos y un un spot esta banda para nuestra zona (Colombia y Venezuela en su mayoría) con el canal RCN TV, que según creo puede ser de interés para la mayoría de nosotros ya que aqui se transmiten varias películas y a las chicas además le presenta una gran cantidad de novelas actuales, así que me decidí a tratar de "cazarlo" con mi Ws-6906 localizándolo luego de varios minutos y ajustándolo para tener mayor señal.
Aqui les dejo algunos tips para su búsqueda:

1) Hazlo de noche que por lo general hay mejor señal y no te pones rojo como una teja por aguantar sol :-)
2) Pon el mastil de tu antena a 90° para garantizar una buena orientación
3) Si puedes, monta el TV y el receptor cerca de la antena para que no tengas que subir y bajar a cada rato para ver la calidad y fuerza de la señal a menos que tengas un equipo como el
SatLink WS-6906 o parecido.
4) Usa el TP  12652 V 2850 para no tener que estar haciendo blind scan constantemente.
5) Orienten su antena con estos datos:
   -Azimut: 145°
   -Elevación: 71°
6) LNB utilizado: Universal 1 salida 0.1 Db.
7) Ajusten bien su antena y disfruten!!!

Este canal es muy atractivo por su programación, ayer 17/03/2013 vi quien quiere ser millonario, y fuen bien divertido, les muestro algunas fotos de la antena de 60 cms y un vídeo que les grabé, que aunque no escuchen el audio se vé y escucha perfectamente (no le coloqué volúmen por no despertar a mi pequeño hijo) :-)


Vídeo demostrativo





domingo, 24 de febrero de 2013

FTA Tips para el VENESAT 1 (Satélite Simón Bolívar)


Luego de varios meses investigando y haciendo  pruebas, comenzé con la práctica y decidí la instalación del equipo y de las ahtenas que tenía a la mano, actualmente estoy conectado al 30°W (Hispasat plato de 60 cm) y al 78° (Vensesat 1) en Banda C especificamente al TP 3886 23000 ya que en el 4005 27000 solo obtengo señal de 17% (Según he investigado y otros han comentado, para este TP es necesario un plato de 1.8 mts). En este último satelite tarde un poco más a pesar de que la antena es de 1.2x1.3 mts, para aquellos que se les ha hecho difícil, les dejo algunos datos que les pueda servir (Aunque parezcan triviales a veces no les prestamos atención):


1) Hazlo de noche que por lo general hay mejor señal y no te pones rojo como una teja por aguantar sol :-)
2) Pon el mastil de tu antena a 90° para garantizar una buena orientación
3) Si puedes, monta el TV y el receptor cerca de la antena para que no tengas que subir y bajar a cada rato para ver la calidad y fuerza de la señal a menos que tengas un equipo como el SatLink WS-6906 o parecido.
4) Usa el TP  3886 V 23000 para no tener que estar haciendo blind scan constantemente, con este TP basta.
5) Orienten su antena con estos datos:
   -Azimut: 255°
   -Elevación: 73°
6) Orienta tu antena inicialmente en Banda KU, es más rapido, luego cambias el LNB a Banda C
7) El escalar cónico ponlo en 38 (la pieza azul fijala en el LNB Banda C en el nro 38)

Les comento que este es mi primer satelite en Banda C, pronto trataré con el NSS 806 a ver que tal porque de verdad este da mucho que desear no por su calidad sino por sus contenidos a menos que pueda agarrar el TP 4005, seguiré intentando.

Les dejo unas fotos para que te guies




Script en PHP para monitorear varios equipos En mi trabajo era necesario verificar constantemente la conectividad de varios equipos de la ...