Historias
Slashboxes
Comentarios
 
Este hilo ha sido archivado. No pueden publicarse nuevos comentarios.
Mostrar opciones Umbral:
Y recuerda: Los comentarios que siguen pertenecen a las personas que los han enviado. No somos responsables de los mismos.
  • Re:Algo hice mal

    (Puntos:1)
    por LaHostia (4695) <tocamela@yel.com> el Domingo, 23 Agosto de 2009, 18:13h (#1168465)
    ( http://barrapunto.com/ | Última bitácora: Viernes, 21 Agosto de 2009, 11:37h )
    Se ve que, como lo he puesto en texto plano, me ha filtrado lo que hay entre <>...

    En el "while", $data debe ser $data = <mySocket>

    #!/usr/bin/perl -X

    use strict;
    use Socket;

    my $ruta = "/var/run/audispd_events";
    my $script = "/usr/bin/unison";
    my $key = "espejo";
    my $data = "";
    my $buffer = "";

    socket (mySocket, PF_UNIX, SOCK_STREAM, 0) || die "socket: $!\n";
    connect(mySocket, sockaddr_un($ruta)) || die "connect: $!";

    while (defined($data = <mySocket>)) {
            if ($data =~ /$key/) {
                    $buffer = `$script`;

                    #print $buffer;
            }

    }

    close(mySocket) || die "close: $!";
    exit;

    Si no defines una clave y usas auditd para monitorizar otro directorio o archivo el script no sabr&#225; cuando lanzar correctamente, en este caso, Unison (puede ser Rsync o lo que quieras).

    De todas formas, si no vas a usar auditd m&#225;s que para esto puedes eliminar el fragmento:
    if ($data =~ /$key/) {
            system($script);
    }

    Y sustituirlo por algo as&#237;:

    if ($data ne "") {
            system($script);
    }

    $data = "";

    No lo he probado, pero creo que deber&#237;a funcionar.

    Un saludo.
    [ Padre ]