next up previous contents
Siguiente: Comprobación a cada minuto Subir: Control de acceso Anterior: Salida   Índice General

p_remoto

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
e-REdING. Biblioteca de la Escuela Superior de Ingenieros de Sevilla.


SISTEMA DE CONTROL, TARIFICACIÓN Y ADMINISTRACIÓN DEL ACCESO A INTERNET DESDE REDES HETEROGÉNEAS

: Martín Ruiz, Jesús
: Ingeniería Telecomunicación
Contenido del proyecto: