Siguiente: Comprobación a cada minuto
Subir: Control de acceso
Anterior: Salida
  Índice General
Este es el proceso que se ejecuta en background en la pasarela para atender las
peticiones del proceso gateway. El código es el siguiente:
#!/usr/bin/perl -w
#-----------------------------------------------------------------------
# Script: p_remoto
# Version: 1.0
# Autor: Jesús Martín Ruiz
# Argumentos: Ninguno
# Descripcion: Crea un proceso en background para atender peticiones.
# Las peticiones consisten en invocar un proceso en el
# servidor por ssh. Recibe las peticiones a través de un
# fichero fifo.
#-----------------------------------------------------------------------
use strict;
use POSIX;
#Demonizamos
my $childpid = fork;
exit if $childpid;
setpgrp (0, $$);
#Controlamos la ejecucion del demonio
die "Ya se esta ejecutando" if (-e "/var/run/p_remoto.pid");
open(FILE,">/var/run/p_remoto.pid");
print FILE $$;
close(FILE);
#Recogemos las senales que devuelven los procesos hijos
$SIG{CHLD}="IGNORE";
#Archivo fifo para recoger peticiones
my $fifo = '/home/nocat/param_fifo';
unlink $fifo if (-e $fifo);
unlink $fifo if (-p $fifo);
if (system("mknod $fifo p "))
{
die "No puede crear la fifo: $! ";
}
my $args;
while (1)
{
#Abrimos la fifo
open(FIFO,"<$fifo") or die "No se puede abrir: $!";
#Leemos los datos
$args = <FIFO>;
close FIFO;
#Creamos un hijo para atender la peticion
my $pid = fork();
if ($pid == 0)
{
(my $servidor,my $action,my @param)= split (/ /,$args);
system("/usr/bin/ssh","nocat\@$servidor",
"/usr/local/nocat/bin/$action @param");
exit;
}
}
Jesús Martín
2003-09-16