lunes, noviembre 03, 2014

Script PHP para revisar si el servidor esta funcionando y enviar alerta por correo


Hola, les ha de caer de sorpresa que ande por aqui nuevamente posteando :P, pero la verdad es que, tratando de cumplir con un projecto, me encontre algo interesante que espero les ayude, es una aplicacion escrita por completo en PHP que les permite revisar el estado de conexion de una maquina y les envia un correo electronico al momento de que esta no esta en linea.  A mi se me hace una excelente aplicacion para revisar el estatus de alguno de tus servidores y correrle en caso de que necesite atencion :)

Aqui les dejo el codigo, con un poco de explicacion:

$system = ini_get('system'); //Sirve para que la aplicacion sepa si esta trabajando en windows o linux.
//$win  = (bool)  $windows;
$count = 1;

// -------------------------
// Se escribe el IP del servidor dentro de las comillas. 
// -------------------------
$host[1] = "192.168.1.149";
// -------------------------
// Nuevamente dentro de las comillas, escribe el nombre del servidor (nadamas para que se vea bonito).
// -------------------------
$services[1] = "ElSeRvErMaSfReGoNdElMuNdO";

// Aqui se dibujan las tablas y se le da el funcionamiento
echo "<table border=\"0\" align=\"center\">";
foreach ($host as $value) 
{
$counter = 0;
$counter1 = $counter + 1;
 echo "<tr><td width=120>$value</td>"; 
      echo '<body bgcolor="#FFFFFF" text="#000000"></body>';       
      //Aqui se revisa si el IP responde a un ping
 $pingreply = exec("ping -n $count $value");
 if ( substr($pingreply, -2) == 'ms')
  {
echo "<td width=60><strong><font color='#006600'>UP</font></strong></td>";
echo "<td width=60><img src='images/up.png'></td>";
echo "<td width=230>". $services[$counter1] . "</td>";
   echo "<td>Reply Speed ";
   echo substr($pingreply, -13);
}
 else 
{
echo "<td width=60><strong><font color='#990000'>DOWN</font></strong></td>";
echo "<td width=60><img src='images/down.jpg'></td>";
echo "<td width=230>". $services[$counter1] . "</td>";
   echo "<td>";
echo "Timeout...";
 // ********** Envia Correo ************
//** A quien se envia el correo.
$email="mycorreo@correo.com";
// ** De quien viene el correo.
$from="sysadmin@SysAdmin.com";
// ** Aqui va el mensaje que quieras que diga el cuerpo del correo.
$msg="Tu server no responde, apurale y arreglalo antes de que te corran!!!!";

$subject="Se cayo tu server y no se puede levantar :P";

$ret=runner_mail(array('to' => $email, 'subject' => $subject, 'htmlbody' => $msg, 'charset' => 'UTF-8', 'from'=>$from));

if(!$ret["mailed"])

  echo $ret["message"];
echo "Timeout...";
}
}
echo "</td></tr></table>";
 // **************************************** //

     LISTO! Con esto pueden recibir una alerta avisandoles que su servidor no esta funcionando, facil y gratis :P.

     Ahora el truco es que tengan configurada la funcion mail() en PHP que les permite enviar correo, o en su defecto, en XAMPP viene con un servidor de correo (Mercury Mail), solo hay que configurar la cuenta, la authenticacion y seguridad para que no te lo "hackeen" y ya quedo.

     En fin, este igual que los demas post, corto y directo al grano, espero que les sea util, si les gusta compartan, comenten e incluso los invito a visitar mi pagina de Facebook (Click aqui para ir para alla!), denle like y siganos .. (Quiza me cambie a solo utlizar facebook, ustedes que piensan?)

SALUDOS!