Algo que surgió anoche en la clase de Linux (Crontab), fue casualmente “poder hacer un backup automático y que lo envie a nuestro mail”. Todavía no aprendimos Bash Scripting / Pyton / Perl o bien para el que esta mi situación, tenemos la alternativa de ejecutar un script PHP.
Inicialmente este script hacia un dump de la base de datos mysql y enviaba el archivo .sql via mail. Aca lo posteo con algunas modificaciones para que cada uno lo adapte a sus necesidades.
En este ejemplo vamos a imprimir el syslog (tail syslog) y enviarlo via mail como archivo adjunto.
La funcion en PHP para ejecutar un comando Linux es:
system(“tu comando”); // Ej: system(“ps -fea”);
*En este ejemplo listamos los procesos.
Sabiendo esto, el código del script PHP podría ser algo asi:
<?php
//// Script: Nicolas Daitsch 24 de noviembre de 2011
//// http://tech-nico.com/blog
////////////// CONFIGURACION //////////////////////////
$sendto = "Webmaster <tuemail@gmail.com>"; // DESTINO
$sendfrom = "Log Diario Servidor <logs@tuempresa.com>"; // ORIGEN
$sendsubject = "Log Diario mi servidor"; // ASUNTO
$bodyofemail = "Aca esta el log que genero el Crontab."; // MENSAJE
$COMANDO_LINUX = "tail /var/log/syslog"; // COMANDO
////////////////////////////////////////////////////////
$backupfile = "syslog_". date("Y-m-d") . '.txt';
system($COMANDO_LINUX > $backupfile);
include('Mail.php');
include('Mail/mime.php');
$message = new Mail_mime();
$text = "$bodyofemail";
$message->setTXTBody($text);
$message->AddAttachment($backupfile);
$body = $message->get();
$extraheaders = array("From"=>"$sendfrom", "Subject"=>"$sendsubject");
$headers = $message->headers($extraheaders);
$mail = Mail::factory("mail");
$mail->send("$sendto", $headers, $body);
//unlink($backupfile);
?>
Editamos la sección que dice //// CONFIGURACION y escribimos nuestros valores.
Luego instalamos el modulo PEAR para envio de mails con PHP:
# apt-get install php-mail php-mail-mime php-mail-mimedecode
Editamos el Crontab:
# crontab -e
Agregamos esta linea al final, guardamos y salimos:
08 12 * * * /usr/bin/php -f /var/www/backup.php > /root/cronerrors.txt 2>&1
Explicamos lo que hace esta linea:
- (08 12 * * *) Todos los dias a las 12:08 PM
- (/usr/bin/php -f) Ruta del interprete PHP en Debian/Ubuntu. Flag “-f” Ejecutar un archivo PHP.
- (/var/www/log_script/log_send.php) Ruta del Script
- (> /root/cronerrors.txt 2>&1) Redirecciono la salida de error hacia un archivo de texto en /root. Esto también puede ser /home/usuario/errores.log

















