Crontab y PHP: Enviar logs, procesos, o backups via mail

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:

  1. (08 12 * * *) Todos los dias a las 12:08 PM
  2. (/usr/bin/php -f) Ruta del interprete PHP en Debian/Ubuntu. Flag “-f” Ejecutar un archivo PHP.
  3. (/var/www/log_script/log_send.php) Ruta del Script
  4. (> /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
Descargamos los archivos necesarios para el funcionamiento. Y los ubicamos en la ruta /var/www/.
___________________

Galeria de Fotos Flash II con Comentarios

Por suerte la Galeria de Fotos en Flash y PHP (con thumbs GD) y lectura de folders tubo mucha aceptación; así que aquí va la “Versión del Galery en flash con comentarios” tipo fotolog :D

Como varios me lo han pedido, aqui esta la version del galery en flash con comentarios.
El sistema de comentarios se basa en 1 solo archivo PHP llamado guestBook.php que se conecta a la base de datos e interactua con flash como gateway para postar comentarios o leerlos.
Tiene filtro de malas palabras, y para el que quiere tambien puede habilitar las lineas para que te avise por mail que alguien posteo un comment.
Con respecto a la base de datos: Esta hecho para mysql, y consiste de tan solo una sola tablita.
CREATE TABLE `fotolog` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` CHAR( 200 ) NOT NULL ,
`nombrefoto` CHAR( 200 ) NOT NULL ,
`email` VARCHAR( 200 ) NULL ,
`comments` LONGTEXT NULL ,
`time` TIME NULL
) ENGINE = innodb COMMENT = ‘comentarios galery comment’;
El funcionamiento es sencillo pero poco robusto :P
Como las fotos no estan en la base de datos; tome en cuenta el nombre de la foto como ID, por lo tanto hay que tener mucho cuidado con los nombres de fotos duplicados.
Ademas; como no hay ningun Admin para administrar la galeria o comentarios, si eliminamos una foto por FTP el comentario “no se elimina”, entonces van quedan registros perdidos en la tabla de la base de datos.
Con una galeria que no tenga demaciado movimiento no va a haber problema (como fue en mi caso), pero si hay mucho trafico de fotos que se suben y se eliminan podria aparecer comentarios huerfanos.
Configuracion:
Abrir archivo guestBook.php y modificar las lineas siguientes por las de tu base de datos.
$DBhost = “localhost”;   // servidor
$DBuser = “root”;            // usuario
$DBpass = “”;            // clave
$DBName = “fotolog”;            // nombre base de datos
$table = “fotolog”;             // nombre tabla base de datos
$numComments = 5;       // cantidad de comentarios por pagina.
To DO // Para hacer
Lo ideal seria armar un mini admin que muestre las fotos y te permita eliminar la foto con el comentario relacionado.
Agregando un campito mas de “activate” podriamos mostrar los comentarios que solo esten aprobados.
Modificar BadWords desde el admin.
Agregar filtros de metacaracteres para evitar el sql injection.
Descargar Fla Modificado y guestBook.php

El sistema de comentarios se basa en 1 solo archivo PHP llamado guestBook.php que se conecta a la base de datos e interactua con flash como gateway para postear comentarios o leerlos.

galery_commentTiene filtro de malas palabras, y para el que quiere también puede habilitar las lineas para envié por mail un aviso en caso de que haya comentarios nuevos.

Con respecto a la base de datos:  Esta hecho para mysql, y consiste de tan solo una sola tablita.

CREATE TABLE `fotolog` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` CHAR( 200 ) NOT NULL ,
`nombrefoto` CHAR( 200 ) NOT NULL ,
`email` VARCHAR( 200 ) NULL ,
`comments` LONGTEXT NULL ,
`time` TIME NULL
) ENGINE = innodb COMMENT = ‘comentarios galery comment’;

El funcionamiento es sencillo pero poco robusto :P

Como las fotos no están en la base de datos; tome en cuenta el nombre de la foto como ID, por lo tanto hay que tener mucho cuidado con los nombres de fotos duplicadas.
Ademas, como no hay ningún Admin para administrar la galería o comentarios, si eliminamos una foto por FTP, el comentario “no se elimina”, entonces van quedan registros perdidos en la tabla de la base de datos.
Con una galeria que no tenga demaciado movimiento no va a haber problema (como fue en mi caso), pero si hay mucho trafico de fotos que se suben y se eliminan podria aparecer comentarios huerfanos.

Configuracion:

Abrir archivo guestBook.php y modificar las lineas siguientes por las de tu base de datos.

$DBhost = “localhost”;   // servidor
$DBuser = “root”;            // usuario
$DBpass = “”;            // clave
$DBName = “fotolog”;            // nombre base de datos
$table = “fotolog”;             // nombre tabla base de datos
$numComments = 5;       // cantidad de comentarios por pagina.

To DO // Para hacer

  • Lo ideal seria armar un mini admin que muestre las fotos y te permita eliminar la foto con el comentario relacionado.
  • Agregando un campito mas de “activate” podriamos mostrar los comentarios que solo esten aprobados.
  • Modificar BadWords desde el admin.
  • Agregar filtros de metacaracteres para evitar el sql injection.

Descargar Fla Modificado y guestBook.php

________________
tech-nico.com/blog

Galeria de Fotos en Flash y PHP (con thumbs GD) y lectura de folders.

Hace mucho tiempo tuve que crear una galería de fotos en flash y PHP ( que me saco de muchos apuros ).

Lo particularmente bueno de esta galería es que levanta las fotos on the fly desde carpetas del servidor que creemos o ya estén creadas. Entonces el cliente mismo puede generar galerías de fotos simplemente creando carpetas por FTP y haciendo copy paste de las imágenes que desea subir. Algo muy practico y sencillo para los clientes no entendidos.
Mi propósito principal fue evitar que alguien tenga que editar un FLA… o un XML o mas engorroso aun tener que armar un admin con upload para el manejo de la galería.

Características de la galería:

  • Usa Flash para precarga de fotos.
  • Lee varias carpetas de fotos.
  • Paginación de fotos (20 x página).
  • Librería GD de php para generar los thumbs con cacheo para agilizar la carga.
  • No usa base de datos ni XML.
  • Fácil configuración y mantenimiento.

Dentro de la carpeta “galery” debe haber 5 archivos y 1 carpeta llamada “images”. Se recomienda no cambiar el nombre de la carpeta. (De lo contrario la galería no funciona).

galery_tech_nico.fla
Archivo editable de Flash contenedor de la galería de fotos.

galery_tech_nico.swf
Este archivo es la galería de fotos compilada y lista para embeber en tu web.

folderImages.php
Recibe como parámetro un string (“nombre de carpeta”) y recorre en el servidor las imágenes que esta contenga. Finalmente devuelve sus rutas a flash.

folders.php
Recorre todo el directorio “images” y devuelve a flash los nombres, rutas, tamaño de cada una de las fotos y además la cantidad de fotos por directorio.

thumb.php
Recibe varios parámetros como alto, ancho, etc. y devuelve la imagen resampleada para generar los thumbnail de la galería.

INSTALACION:
1) Editar archivo galery_tech_nico.fla.
Escribe el nombre de tu dominio

2) Editar folderImages.php y folders.php.

Esta versión también tenia para postear comentarios en las fotos. Pero esa parte usa una base de datos MySQL así que verán que en el archivo de flash esta comentado. (Si alguien los necesita subo los archivos.).
Se que tiene muchas cosas por mejorar, pero ya cumplió su ciclo :P .

GALERIA CON COMENTARIOS:
http://www.tech-nico.com/blog/galeria-de-fotos-flash-con-comentarios-php/

descargar galery

Nicolas
______________________
www.tech-nico.com/blog