Página 2 de 4

Re: Análisis del archivo /etc/login.defs

NotaPublicado: 2011-01-31 14:50 @660
por situ
Perdón, te paso el problema que tengo; me da un falso/positivo.

Código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my %valor_correcto_de = (
  2.     Protocol => 2,
  3.     PermitRootLogin => "no",
  4. );
  5.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Cuando lo corro me dice que el valor de PermitRootLogin es correcto pero en verdad no es así, porque en el archivo lo tengo como "yes"

Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. situ@tux ~/ $ grep PermitRootLogin /etc/ssh/sshd_config
  2. PermitRootLogin yes
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4

Re: Análisis del archivo /etc/login.defs

NotaPublicado: 2011-01-31 15:33 @689
por explorer
El problema está en la línea 31. Ahí se está comparando valores numéricos, pero tu estás buscando caracteres alfanuméricos.

Cambia el '==' por 'eq'.

Re: Análisis del archivo /etc/login.defs

NotaPublicado: 2011-01-31 15:53 @703
por situ
¡Uf!, tienes razón, =( perdón, no me había dado cuenta.

Re: Análisis del archivo /etc/login.defs

NotaPublicado: 2011-01-31 20:45 @906
por situ
Subí el código que estaba haciendo del script a Google Code:

http://code.google.com/p/checklistlinux/

Como siempre, muchas gracias por la ayuda que me dan.

Saludos.

Re: Análisis del archivo /etc/login.defs

NotaPublicado: 2011-02-03 14:24 @642
por situ
Consulta: ¿hay posibilidades de agregarle varios argumentos a la ejecución de la aplicación?

Ejecuto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
tux ~/Escritorio/checklist-linux $ perl checklist.pl --usuariodefault --syslog
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Solamente me ejecuta el primer argumento. ¿Tengo que hacer un for() de la lectura de los argumento para hacer lo que necesito?

Saludos.

Re: Análisis del archivo /etc/login.defs

NotaPublicado: 2011-02-03 17:48 @783
por wanako
De manera predeterminada Switch() se detiene en la primer coincidencia: Switch
O agregas next() en cada 'case' o cambias al principio use Switch 'fallthrough'; para que no se detenga y recorra todos los argumentos.

Re: Análisis del archivo /etc/login.defs

NotaPublicado: 2011-02-03 18:18 @804
por situ
Le agregue "next" pero no me funcionó.

Código:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.  
  2. switch ($opciones) {
  3. case "--usuariodefault"     { usuariodefault(); next }
  4. case "--permisosAD"         { permisosAD(); next}
  5. case "--suidguidsticky"     { suidguidsticky(); next}
  6. case "--sinownergroup"      { sinownergroup(); next}
  7. case "--writeparatodos"     { writeparatodos(); next}
  8. case "--syslog"             { syslog(); next}
  9. case "--usuariosgrupos"     { usuariosgrupos (); next}
  10. case "--expiracionUsuarios" { expiracionUsuarios(); next}
  11. case "--seguridadnet"       { seguridadnet(); next}
  12. case "--seguridadssh"       { seguridadssh(); next}
  13. case "--todos"              { todos(); }
  14.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Ejecuto script:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. casa@casa /tmp $ perl checklist-2.0.3.pl --usuariodefault --syslog
  2. ----------------------------------------------------------------------------------------------------------------
  3. Sistema Operativo: Linux
  4. Release del Kernel: 2.6.31-22-generic
  5. Hostname: casa
  6. Datos Adicionales: Linux casa 2.6.31-22-generic #65-Ubuntu SMP Thu Sep 16 15:48:58 UTC 2010 i686 GNU/Linux
  7. ----------------------------------------------------------------------------------------------------------------
  8.  -- Verificacion de usuarios default
  9. ----------------------------------------------------------------------------------------------------------------
  10. Negativo: El usuario lp existe
  11. Negativo: El usuario news existe
  12. Negativo: El usuario uucp existe
  13. Negativo: El usuario games existe
  14. ----------------------------------------------------------------------------------------------------------------
  15. Se a ingreso una opcion incorrecta
  16. ----------------------------------------------------------------------------------------------------------------
  17. Informacion: Se da por finalizado el proceso de chequeo
  18. Informacion: El reporte fue salvado con el nombre: casa-03-02-2011.html
  19. Informacion: Las recomendaciones fueron guardadas en el archivo: casa-03-02-2011-recomendacion.html
  20. ----------------------------------------------------------------------------------------------------------------
  21.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Ejecuto el primer argumento "--usuariodefault" y me advierte que ingresé mal el 2do pero está bien, es como sino toma nada como 2do argumento.

Cuando muestra "Se a ingreso una opción incorrecta" es porque el argumento ingresado es erróneo.

Re: Análisis del archivo /etc/login.defs

NotaPublicado: 2011-02-03 19:57 @873
por wanako
Porque sólo le pasas el primer argumento a Switch():

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use strict;
  2. use Switch 'fallthrough';
  3.  
  4. ## $opciones= $ARGV[0]; Primer argumento
  5. ## chomp $opciones;
  6.  
  7. print "Argumentos: ";
  8. switch (\@ARGV) {
  9.     case "-a" { print "A "; }
  10.     case "-b" { print "B "; }
  11.     case "-c" { print "C "; }
  12.     case "-d" { print "D "; }
  13.     else { print "nunu "; }
  14. }
  15. print "\n";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Aunque es mejor usar Getopt::Long para un mayor control.

Re: Análisis del archivo /etc/login.defs

NotaPublicado: 2011-02-03 20:50 @909
por situ
Muchas Gracias, funciona correctamente.

Saludos.

Re: Análisis del archivo /etc/login.defs

NotaPublicado: 2011-02-14 07:55 @371
por situ
Tengo 3 funciones, de las cuales solamente la primera me hice el print() a un archivo externo. Las demás no me funciona este output.

Output externo = "ARCH"

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. sub expiracionUsuarios {
  2. our %valor_correcto_de;
  3. my $FICHERO = '/etc/login.defs';
  4. my $login_defs = do { undef $/; open F, $FICHERO; <F> };
  5. for my $parametro (sort keys %valor_correcto_de) {
  6.     if (my($valor_actual) = $login_defs =~ /^ $parametro \s+ (\S+?) $/xsim) {
  7.         if ($valor_actual == $valor_correcto_de{$parametro}) {
  8.             print BOLD, GREEN, 'Positivo: ', RESET, "El valor del parametro $parametro es correcto\n";
  9.         }
  10.         else {
  11.             print BOLD, RED  , 'Negativo: ', RESET, "El valor del parametro $parametro es incorrecto: ",
  12.                 "$valor_actual != $valor_correcto_de{$parametro}\n";
  13.  print ARCH "<tr><td><font color=#ff0000 face=Verdana size=1>Negativo</font><font face=Verdana size=1> El valor del parametro $parametro es incorrecto: $valor_actual != $valor_correcto_de{$parametro}</font></td></tr>\n";
  14.         }
  15.     }
  16.     else {
  17.         print BOLD . 'No existe ' . RESET, "el parametro $parametro en $FICHERO";
  18.     }
  19. }
  20. }
  21.  
  22. sub seguridadnet {
  23. our %valor_correcto_net;
  24. my $FICHERO2 = '/etc/sysctl.conf';
  25. my $var_net = do { undef $/; open F, $FICHERO2; <F> };
  26. for my $parametro2 (sort keys %valor_correcto_net) {
  27.     if (my($valor_actual_net) = $var_net =~ /^ $parametro2(\S+?) $/xsim) {
  28.         if ($valor_actual_net == $valor_correcto_net{$parametro2}) {
  29.             print BOLD, GREEN, 'Positivo: ', RESET, "El valor del parametro $parametro2 es correcto\n";
  30.         }
  31.         else {
  32.     print BOLD, RED  , 'Negativo: ', RESET, "El valor del parametro $parametro2 es incorrecto: ",
  33.             "$valor_actual_net != $valor_correcto_net{$parametro2}\n";
  34.  print ARCH "<tr><td><font color=#ff0000 face=Verdana size=1>Negativo</font><font face=Verdana size=1> El valor del parametro $parametro2 es incorrecto: $valor_actual_net != $valor_correcto_net{$parametro2}</font></td></tr>\n";
  35.         }
  36.     }
  37.     else {
  38.         print BOLD . 'No existe ' . RESET, "el parametro $parametro2 en $FICHERO2\n";
  39.     }
  40. }
  41. }
  42.  
  43. sub seguridadssh {
  44. our %valor_correcto_ssh;
  45. my $FICHERO3 = '/etc/ssh/sshd_config';
  46. my $var_ssh = do { undef $/; open F, $FICHERO3; <F> };
  47. for my $parametro3 (sort keys %valor_correcto_ssh) {
  48.     if (my($valor_actual_ssh) = $var_ssh =~ /^ $parametro3 \s+ (\S+?) $/xsim) {
  49.         if ($valor_actual_ssh eq $valor_correcto_ssh{$parametro3}) {
  50.             print BOLD, GREEN, 'Positivo: ', RESET, "El valor del parametro $parametro3 es correcto\n";
  51.         }
  52.         else {
  53.             print BOLD, RED  , 'Negativo: ', RESET, "El valor del parametro $parametro3 es incorrecto: $valor_actual_ssh != $valor_correcto_ssh{$parametro3}\n";
  54.     print ARCH "<tr><td><font color=#ff0000 face=Verdana size=1>Negativo</font><font face=Verdana size=1> El valor del parametro $parametro3 es incorrecto: $valor_actual_ssh != $valor_correcto_ssh{$parametro3}</font></td></tr>\n";
  55.         }
  56.     }
  57.     else {
  58.         print BOLD . 'No existe ' . RESET, "el parametro $parametro3 en $FICHERO3\n";
  59.     }
  60. }
  61. }
  62.  
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Solamente me hace el output la función "expiracionUsuarios".