Hola...
 
Mando un scrpit en Perl para que alguien que sepa le pegue una revisada y me diga si esta bien???
 
Es un script que uso para facturar los abonos de internet de mis usuarios del ISP. Pero al agregar un abono,
lo modifique (abono 2 - nuevo) y quiero saber si quedo bien..
 
De paso quizas le sirva a alguien mas el scrpit :)
 
Me ayuda alguien?
 
Salu2s
Tony
#! /usr/bin/perl
#abonos-internet V1.0.2

format STDOUT =
.

format TITULO_MODO_COMPACTO =
.

format TITULO_MODO_EXTENDIDO =
--------------------------------------------------------------------------------
| Nr |                     USUARIO                   |ABO|USAD|EXED|TEX|EAD|HAD|
--------------------------------------------------------------------------------
.

format PIE_MODO_EXTENDIDO =
--------------------------------------------------------------------------------
.

format LINEA_MODO_COMPACTO =
@>>>>>>@>@>>@>@>
$NUMEROTELEFONO,$USUARIO{$NUMEROTELEFONO}{"ABONO"},$USUARIO{$NUMEROTELEFONO}{"HORASEXCEDENTES"},$USUARIO{$NUMEROTELEFONO}{"EMAILADICIONAL"},$USUARIO{$NUMEROTELEFONO}{"HOSTINGADICIONAL"}
.

format LINEA_MODO_EXTENDIDO =
@@>>@>@<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<@@||@@>>>@@>>>@@||@@||@@||@
"|",$i,"|",$USUARIO{$NUMEROTELEFONO}{"NOMBREREAL"}." 
[".$USUARIO{$NUMEROTELEFONO}{"LOGIN"}."]","|",$USUARIO{$NUMEROTELEFONO}{"ABONO"},"|",$USUARIO{$NUMEROTELEFONO}{"HORASUSADAS"},"|",$USUARIO{$NUMEROTELEFONO}{"HORASEXCEDENTES"},"|",$USUARIO{$NUMEROTELEFONO}{"TIPOEXCEDENTE"},"|",$USUARIO{$NUMEROTELEFONO}{"EMAILADICIONAL"},"|",$USUARIO{$NUMEROTELEFONO}{"HOSTINGADICIONAL"},"|"
.

format CODIGOS =
--------------------------------------------------------------------------------
                                     CODIGOS
--------------------------------------------------------------------------------
1 - Abono de 15 horas mas casilla de correo electronico
2 - Abono de 30 horas mas 2 casillas de correo electronico
3 - Abono de 45 horas mas 3 casillas de correo electronico
4 - Abono sin limite de horas mas 5 casillas de correo electronico mas hosting
5 - Abono de hosting mas 5 casillas de correo electronico
6 - Casilla de correo electronico
7 - Casilla de correo electronico adicional
8 - Hosting adicional mas 5 casillas de correo electronico
--------------------------------------------------------------------------------
.

&CargaVariables;
if (@ARGV[0] eq "-c") {
    &CargaModoCompacto;
    &ImprimeModoCompacto;
}
elsif (@ARGV[0] eq "-e") {
    &CargaModoExtendido;
    &ImprimeModoExtendido;
}
else {
    print "abonados-internet v1.0.2\n";
    print "Realiza un informe sobre el estado de los usuarios del sistema\n";
    print "Parametros:\n";
    print "           -c  Listado compacto. Requerida por el programa de 
facturacion.\n";
    print "           -e  Listado extendido. Informacion adicional sobre cada 
usuario.\n";
}
&Terminar;

sub CargaVariables {
    $DEFINICIONABONO{"HORASDISPONIBLES"}{1}=15;
    $DEFINICIONABONO{"HORASDISPONIBLES"}{2}=30;
    $DEFINICIONABONO{"HORASDISPONIBLES"}{3}=45;
}

sub CargaModoCompacto {
    open(ABONOS,"/bin/cat /etc/abonos.conf | grep -w 1 |");
        while ($LINEA = <ABONOS>) {
            ($USUARIO,$TIPOABONO,$TOPE,$FACTURO,$NUMEROTELEFONO) = 
split(/\s+/,$LINEA,5);
            if ($FACTURO eq "1") {
                if ( ($TIPOABONO eq "1") or ($TIPOABONO eq "2") or ($TIPOABONO eq "3") 
or ($TIPOABONO eq "4") or ($TIPOABONO eq "6") ){
                    $USUARIO{$NUMEROTELEFONO}{"LOGIN"}=$USUARIO;
                    $USUARIO{$NUMEROTELEFONO}{"ABONO"}=$TIPOABONO;
                    $USUARIO{$NUMEROTELEFONO}{"HORASUSADAS"}=0;
                    $USUARIO{$NUMEROTELEFONO}{"HORASEXCEDENTES"}=0;
                    $USUARIO{$NUMEROTELEFONO}{"TIPOEXCEDENTE"}=0;
                    $USUARIO{$NUMEROTELEFONO}{"EMAILADICIONAL"}=0;
                    $USUARIO{$NUMEROTELEFONO}{"HOSTINGADICIONAL"}=0;
                    open(NOMBREREAL,"/bin/cat /etc/passwd | /bin/grep \"$USUARIO:\" | 
/usr/bin/awk -F: '{print \$5}' |");
                        $USUARIO{$NUMEROTELEFONO}{"NOMBREREAL"}=<NOMBREREAL>;
                        chop($USUARIO{$NUMEROTELEFONO}{"NOMBREREAL"});
                    close(NOMBREREAL);
                    open(CONEXIONES,"/root/bin/conexiones n=$USUARIO [EMAIL PROTECTED] 
-rr |");
                        $USUARIO{$NUMEROTELEFONO}{"HORASUSADAS"}=<CONEXIONES>;
                        chop($USUARIO{$NUMEROTELEFONO}{"HORASUSADAS"});
                    close(CONEXIONES);
                    if ( ($TIPOABONO eq "1") or ($TIPOABONO eq "2")  or ($TIPOABONO eq 
"3") ) {
                        if ( $USUARIO{$NUMEROTELEFONO}{"HORASUSADAS"} > 
$DEFINICIONABONO{"HORASDISPONIBLES"}{$TIPOABONO}) { #Si se paso de las horas de su 
abono
                            if ($TOPE eq "0") {
                                
$USUARIO{$NUMEROTELEFONO}{"HORASEXCEDENTES"}=$USUARIO{$NUMEROTELEFONO}{"HORASUSADAS"}-$DEFINICIONABONO{"HORASDISPONIBLES"}{$TIPOABONO};
                                $USUARIO{$NUMEROTELEFONO}{"TIPOEXCEDENTE"}="N";
                            }
                            else {
                                $USUARIO{$NUMEROTELEFONO}{"HORASEXCEDENTES"}=0;
                                $USUARIO{$NUMEROTELEFONO}{"TIPOEXCEDENTE"}="M";
                            }
                        }
                    }
                }
                elsif ( ($TIPOABONO eq "5") ) {
                    $USUARIO{$NUMEROTELEFONO}{"LOGIN"}=$USUARIO;
                    $USUARIO{$NUMEROTELEFONO}{"ABONO"}=$TIPOABONO;
                    $USUARIO{$NUMEROTELEFONO}{"HORASUSADAS"}=0;
                    $USUARIO{$NUMEROTELEFONO}{"HORASEXCEDENTES"}=0;
                    $USUARIO{$NUMEROTELEFONO}{"TIPOEXCEDENTE"}=0;
                    $USUARIO{$NUMEROTELEFONO}{"EMAILADICIONAL"}=0;
                    $USUARIO{$NUMEROTELEFONO}{"HOSTINGADICIONAL"}=0;
                    open(NOMBREREAL,"/bin/cat /etc/passwd | /bin/grep \"$USUARIO:\" | 
/usr/bin/awk -F: '{print \$5}' |");
                        $USUARIO{$NUMEROTELEFONO}{"NOMBREREAL"}=<NOMBREREAL>;
                        chop($USUARIO{$NUMEROTELEFONO}{"NOMBREREAL"});
                    close(NOMBREREAL);
                    $USUARIO{$NUMEROTELEFONO}{"HORASUSADAS"}="";
                }
                elsif ( ($TIPOABONO eq "7") ) {
                    $USUARIO{$NUMEROTELEFONO}{"EMAILADICIONAL"}=$TIPOABONO;
                }
                elsif ( ($TIPOABONO eq "8") ) {
                    $USUARIO{$NUMEROTELEFONO}{"HOSTINGADICIONAL"}=$TIPOABONO;
                }
            }
        }
    close(ABONOS);
}

sub CargaModoExtendido {
    open(ABONOS,"/bin/cat /etc/abonos.conf | grep -w 1 |");
        while ($LINEA = <ABONOS>) {
            ($USUARIO,$TIPOABONO,$TOPE,$FACTURO,$NUMEROTELEFONO) = 
split(/\s+/,$LINEA,5);
            if ($FACTURO eq "1") {
                if ( ($TIPOABONO eq "1") or ($TIPOABONO eq "2") or ($TIPOABONO eq "3") 
or ($TIPOABONO eq "4") or ($TIPOABONO eq "6") ){
                    $USUARIO{$NUMEROTELEFONO}{"LOGIN"}=$USUARIO;
                    $USUARIO{$NUMEROTELEFONO}{"ABONO"}=$TIPOABONO;
                    $USUARIO{$NUMEROTELEFONO}{"HORASUSADAS"}="";
                    $USUARIO{$NUMEROTELEFONO}{"HORASEXCEDENTES"}="";
                    $USUARIO{$NUMEROTELEFONO}{"TIPOEXCEDENTE"}="";
                    $USUARIO{$NUMEROTELEFONO}{"EMAILADICIONAL"}="";
                    $USUARIO{$NUMEROTELEFONO}{"HOSTINGADICIONAL"}="";
                    open(NOMBREREAL,"/bin/cat /etc/passwd | /bin/grep \"$USUARIO:\" | 
/usr/bin/awk -F: '{print \$5}' |");
                        $USUARIO{$NUMEROTELEFONO}{"NOMBREREAL"}=<NOMBREREAL>;
                        chop($USUARIO{$NUMEROTELEFONO}{"NOMBREREAL"});
                    close(NOMBREREAL);
                    open(CONEXIONES,"/root/bin/conexiones n=$USUARIO [EMAIL PROTECTED] 
-rr |");
                        $USUARIO{$NUMEROTELEFONO}{"HORASUSADAS"}=<CONEXIONES>;
                        chop($USUARIO{$NUMEROTELEFONO}{"HORASUSADAS"});
                    close(CONEXIONES);
                    if ( ($TIPOABONO eq "1") or or ($TIPOABONO eq "2") ($TIPOABONO eq 
"3") ) {
                        if ( $USUARIO{$NUMEROTELEFONO}{"HORASUSADAS"} > 
$DEFINICIONABONO{"HORASDISPONIBLES"}{$TIPOABONO}) { #Si se paso de las horas de su 
abono
                            
$USUARIO{$NUMEROTELEFONO}{"HORASEXCEDENTES"}=$USUARIO{$NUMEROTELEFONO}{"HORASUSADAS"}-$DEFINICIONABONO{"HORASDISPONIBLES"}{$TIPOABONO};
                            if ($TOPE eq "0") {
                                $USUARIO{$NUMEROTELEFONO}{"TIPOEXCEDENTE"}="N";
                            }
                            else {
                                $USUARIO{$NUMEROTELEFONO}{"TIPOEXCEDENTE"}="M";
                            }
                        }
                    }
                }
                elsif ( ($TIPOABONO eq "5") ) {
                    $USUARIO{$NUMEROTELEFONO}{"LOGIN"}=$USUARIO;
                    $USUARIO{$NUMEROTELEFONO}{"ABONO"}=$TIPOABONO;
                    $USUARIO{$NUMEROTELEFONO}{"HORASUSADAS"}="";
                    $USUARIO{$NUMEROTELEFONO}{"HORASEXCEDENTES"}="";
                    $USUARIO{$NUMEROTELEFONO}{"TIPOEXCEDENTE"}="";
                    $USUARIO{$NUMEROTELEFONO}{"EMAILADICIONAL"}="";
                    $USUARIO{$NUMEROTELEFONO}{"HOSTINGADICIONAL"}="";
                    open(NOMBREREAL,"/bin/cat /etc/passwd | /bin/grep \"$USUARIO:\" | 
/usr/bin/awk -F: '{print \$5}' |");
                        $USUARIO{$NUMEROTELEFONO}{"NOMBREREAL"}=<NOMBREREAL>;
                        chop($USUARIO{$NUMEROTELEFONO}{"NOMBREREAL"});
                    close(NOMBREREAL);
                    $USUARIO{$NUMEROTELEFONO}{"HORASUSADAS"}="";
                }
                elsif ( ($TIPOABONO eq "7") ) {
                    $USUARIO{$NUMEROTELEFONO}{"EMAILADICIONAL"}=$TIPOABONO;
                }
                elsif ( ($TIPOABONO eq "8") ) {
                    $USUARIO{$NUMEROTELEFONO}{"HOSTINGADICIONAL"}=$TIPOABONO;
                }
            }
        }
    close(ABONOS);
}


sub ImprimeModoCompacto {
    foreach (keys %USUARIO) {
        $NUMEROTELEFONO=$_;
        write(LINEA_MODO_COMPACTO);
    }
    write;
}

sub ImprimeModoExtendido {
    write(TITULO_MODO_EXTENDIDO);
    $i=1;
    foreach (keys %USUARIO) {
        $NUMEROTELEFONO=$_;
        write(LINEA_MODO_EXTENDIDO);
        $i+=1;
    }
    write(PIE_MODO_EXTENDIDO);
    write(CODIGOS);
    write;
}

sub Terminar {
        exit;
}
-- 
Para desuscribirte ten�s que visitar la p�gina
https://listas.linux.org.ar/mailman/listinfo/lugar-gral/

Si ten�s alg�n inconveniente o consulta escrib� a mailto:[EMAIL PROTECTED]
Apoya al ASLE enviando tu firma http://www.linux.org.ar/asle

Responder a