On Tue, 14 Mar 2006 21:31:15 -0300 Angel Claudio Alvarez <angel@angel-alvarez.com.ar> wrote: > El mar, 14-03-2006 a las 20:49 -0300, Ricardo Marcelo Alvarez escribió: > > On Tue, 14 Mar 2006 20:34:50 +0100 > > Rober Morales <ultimozar@hotmail.com> wrote: > > > > > El Martes, 14 de Marzo de 2006 20:24, Ricardo Marcelo Alvarez escribió: > > > > > Si lo puedes leer tú problema posiblemente estará en el script. Comprueba > > > > > q las rutas sean absolutas y las variables q utilizas a ver si hay > > > > > suerte. > > > > > > > > > > Saludos > > > > > > > > El script como root funciona bien, el problema es como usuario, incluso > > > > saque el stdout y stderr hacia un archivo y es ahi donde me aparece que no > > > > tiene permisos para leer ese archivo. En el log deja esto > > > > > > > > Error opening /var/log/apache2/transfer_pg.log: Permiso denegado at > > > > /usr/local/gnupanel/mide-trafico-http.pl line 137 > > > > > > el archivo debe tener permisos de lectura para el usuario/grupo (esto creo que > > > está) > > > > > > Y > > > > > > la ruta debe ser recorrible. Es decir, cada directorio debe tener permisos de > > > apertura (x) para el usuario/grupo desde "/" o desde donde se ejecute el > > > script. > > > > > > prueba con ello. > > > > > > > Aca mando los permisos de toda la ruta de directorios > > > > gnupanel:/# ls -l -d /var > > drwxr-xr-x 14 root root 4096 2006-02-20 20:03 /var > > gnupanel:/# ls -l -d /var/log > > drwxr-xr-x 13 root root 4096 2006-03-14 06:25 /var/log > > gnupanel:/# ls -l -d /var/log/apache2 > > drwxr-xr-x 2 root root 4096 2006-03-13 03:00 /var/log/apache2 > > gnupanel:/# ls -l -d /var/log/apache2/ > > access.log error.log error.log.1 transfer.log transfer.log.1 transfer_pg.log transfer_pg.log.1 > > gnupanel:/# ls -l -d /var/log/apache2/transfer_pg.log > > -rw-r----- 1 root adm 1900 2006-03-14 20:38 /var/log/apache2/transfer_pg.log > > gnupanel:/# > > > > > > Saludos. > > > El usuario que ejecuta el daemon esta en el grupo adm? > Ejecutaste el script sin daemonizar?? > Podes postear el codigo?? > > Aca va el codigo, la parte donde el script cambia el usuario esta comentada #############begin################### #!/usr/bin/perl use File::Tail; use Pg; sub senal_de_fin { my $signal = shift; $SIG{$signal} = \&senal_de_fin; close MENSAGES; exit(0); } sub senal_de_kill { my $signal = shift; $SIG{$signal} = \&senal_de_kill; close MENSAGES; exit(0); } sub analiza_http { my $renglon = $_[0]; my $conexion = $_[1]; my $logueo = $_[2]; open(MENSHTTP,">> $logueo"); @datos = NULL; @datos = split(' ',$renglon); $dominio = $datos[0]; $transferencia = $datos[1]; my $result = NULL; $result = $conexion->exec("BEGIN"); $sql = "SELECT dominio FROM gnupanel_transferencias WHERE dominio='$dominio' "; $result = $conexion->exec($sql); $result = $conexion->getResult; if($result) { $sql = "UPDATE gnupanel_transferencias SET http = http + $transferencia WHERE dominio = '$dominio' "; $result = $conexion->exec($sql); $estado = $result->resultStatus; $sql = "UPDATE gnupanel_transferencias SET total = http + ftp + smtp + pop3 WHERE dominio = '$dominio' "; $result = $conexion->exec($sql); $estado = $estado && $result->resultStatus; if($estado == PGRES_COMMAND_OK) { $result = $conexion->exec("END"); } else { $mensaje = $conexion->errorMessage; print MENSHTTP $mensaje; $result = $conexion->exec("ROLLBACK"); } } else { $mensaje = "No se hace nada \n"; print MENSHTTP $mensaje; $result = $conexion->exec("END"); } close MENSHTTP; } ####################################################################################################################### ## Put ourselves in background if not in debug mode. require "/etc/gnupanel/gnupanel.conf.pl"; $nombre = $0; $nombre = substr($nombre,rindex($nombre,"/")+1,length($nombre)-1); $logueo = "/var/log/".$nombre.".log"; $pidfile = "/var/run/".$nombre.".pid"; $conexion = NULL; open(STDERR, ">> $logueo"); $SIG{'TERM'} = \&senal_de_fin; $SIG{'KILL'} = \&senal_de_kill; if (open(TTY, "/dev/tty")) { ioctl(TTY, $TIOCNOTTY, 0); close(TTY); } $definida = setpgrp(0, 0); $proceso = getppid; $child_pid = fork; if ( $child_pid != 0) { print "Inicializando el medidor de trafico de HTTP \n"; exit(0); } else { #Inicio del programa open(STDOUT, ">> $logueo"); open(PIDO,"> $pidfile"); print PIDO "$$ \n"; close PIDO; # my ($login,$pass,$uid,$gid) = getpwnam($usuario); # $( = $gid; # $) = $gid; # $< = $uid; # $> = $uid; # # if ( ((split(/ /,$)))[0] ne $gid) || ((split(/ /,$())[0] ne $gid) ) # { # open(MENSAGES,">> $logueo"); # print MENSAGES "No se pudo cambiar el GID \n"; # close MENSAGES; # } # # if ( ($> ne $uid) || ($< ne $uid) ) # { # open(MENSAGES,">> $logueo"); # print MENSAGES "No se pudo cambiar el UID \n"; # close MENSAGES; # } # # undef($login); # undef($pass); # undef($uid); # undef($gid); $file = File::Tail->new(name=>$archivo_log_http,interval=>1,maxinterval=>1,adjustafter=>1); $conexion = NULL; $conexion = Pg::connectdb("dbname=$database host=localhost user=$userdb password=$pasaportedb"); while(1) { $estado = $conexion->status; if($estado==PGRES_CONNECTION_OK) { while(defined($linea=$file->read)) { chop($linea); analiza_http($linea,$conexion,$logueo); } } else { $mensaje = $conexion->errorMessage; open(MENSAGES,">> $logueo"); print MENSAGES $mensaje; close MENSAGES; $conexion->reset; } } #fin del programa } $end = 0; ############################################################################################################################################################### #############end##################### En el archivo /etc/gnupanel/gnupanel.conf.pl estan definidas las siguientes variables #############begin################### $database = "gnupanel"; $userdb = "gnupanel"; $pasaportedb = "XXXXXXXXXXX"; $archivo_log_mail = "/var/log/mail.log"; $archivo_log_ftp = "/var/log/proftpd/proftpd.log"; $archivo_log_http = "/var/log/apache2/transfer_pg.log"; $archivo_log_https = "/var/log/apache-ssl/transfer_pg.log"; $tiempo_dir = 900; $directorio_raiz_sitios = "/var/www/sitios"; $directorio_raiz_correo = "/var/mail/correos"; $usuario = "gnupanelex"; $grupo = "gnupanelex"; #############end##################### saludos. > > > > > -- > > > "Como no sabían que era imposible, lo hicieron!" > > > > > > Rober Morales Chaparro > > > > > > > -- > Angel Claudio Alvarez > Usuario Linux Registrado 143466 > GPG Public Key en http://pgp.mit.edu > key fingerprint = 3AED D95B 7E2D E954 61C8 F505 1884 473C FC8C 8AC4 > >
Attachment:
pgpX5U7RcOrJI.pgp
Description: PGP signature