OpenALPR - Crear tarea programada en servidor ubuntu para enviar reportes diarios por correo a una hora determinada
Primero es necesario configurar el servidor para permitir enviar correos mediante SMTP, para esto necesitamos instalar el paquete SSMTP tecleando el siguiente comando en una terminal de ubuntu:
sudo apt install ssmtpUna vez finalizado la instalación procederemos a configurarlo, en la terminal tecleamos lo siguiente:
sudo nano /etc/ssmtp/ssmtp.confEn este ejemplo se utilizará un correo de Gmail, por lo cual la configuración debe quedar de la siguiente manera:
root=CUENTA-DE-CORREO@gmail.com
mailhub=smtp.gmail.com:587
hostname=NOMBRE-DE-HOST
FromLineOverride=YES
AuthUser=CUENTA-DE-CORREO@gmail.com
AuthPass=CONTRASEÑA-CUENTA-GMAIL
UseTLS=YES
UseSTARTTLS=YES
Continuamos instalando Php para generar la instrucción, para esto tecleamos el siguiente comando:
sudo apt install php libapache2-mod-php php-mysqlDespués de esto el servidor ya estará configurado.
Ahora procedemos con la creación del archivo que descargará los datos y enviará el correo, para esto tecleamos el siguiente comando:
sudo nano /etc/var/www/reporte1.phpy pegaremos el siguiente código:
<?php
//Variables
$fecha_hoy = date("Y-m-d");
$color = "#e4e4e4";
$hora_inicio = "06:00";
$hora_fin = "20:00";
//Información sobre base de datos
$host = "localhost";
$usuario = "openalpr";
$contrasena = "";
$base_datos = "openalpr";
$puerto = 3306;
//Conexión y consultas
$conexion = mysqli_connect($host,$usuario,$contrasena,$base_datos,$puerto);
$query = "select best_plate as 'placa', count(best_plate) as 'cantidad' from openalpr.front_alprgroup where epoch_time_end between adddate('".$fecha_hoy." ".$hora_inicio."', interval 7 hour) and adddate('".$fecha_hoy." ".$hora_fin."', interval 7 hour) group by best_plate";
$consulta = mysqli_query($conexion,$query);
//Armado del mensaje
$mensaje = "".
"<h2>Reporte OpenALPR</h2>".
"<table style='text-align:center; border:1px solid; border-spacing:0;'>".
"<tr>".
"<td><b>PLACA</b></td>".
"<td><b>CANTIDAD</b></td>".
"</tr>";
while($tabla = mysqli_fetch_array($consulta))
{
$mensaje .= "".
"<tr style='background:$color'>".
"<td style='padding:4px'>".$tabla["placa"]."</td>".
"<td style='padding:4px'>".$tabla["cantidad"]."</td>".
"</tr>";
if($color == "#e4e4e4")
{
$color = "#fff";
}
else
{
$color = "#e4e4e4";
}
}
$mensaje .= "".
"</table>";
//Información de contacto
$para = "DESTINO@MAIL.COM";
$de = "CUENTA-DE-CORREO@gmail.com";
$asunto = "Reporte OpenALPR";
$cabeceras = 'MIME-Version: 1.0'."\r\n";
$cabeceras .= 'Content-type: text/html; charset=utf-8'."\r\n";
$cabeceras .= "From:".$de;
//Envio de correo
mail($para,'=?UTF-8?B?'.base64_encode($asunto).'?=',$mensaje,$cabeceras);
echo "El correo fué enviado satisfactoriamente";
echo "\r\n";Deben modificarse las horas de inicio y fin que tomará como rango de consulta para el reporte :
$hora_inicio = "06:00";
$hora_fin = "20:00";También debe modificarse la linea del destino por en correo de la persona que recibirá el reporte.
$para = "DESTINO@MAIL.COM";y la linea del destinatario. Aquí debe ir la misma cuenta de correo del SMTP configurado previamente.
$de = "CUENTA-DE-CORREO@gmail.com";
Ya casi todo está listo, sólo hace falta crear la tarea programada, para esto tecleamos el siguiente comando:
sudo crontab -ey teclearemos la siguiente linea al final:
30 20 * * * /usr/bin/php /var/www/html/reporte1.php30 20 * * * significa que enviara todos los días el reporte a las20:30 horas y ejecutará la función creada del archivo reporte1.php
El resultado sería el siguiente:
