|
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
