• Publicidad

Análisis del archivo /etc/login.defs

¿Eres administrador de sistemas? Este foro es para todos aquellos temas relacionados con el uso de Perl para administración de sistemas.

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

Notapor situ » 2011-01-31 14:50 @660

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.002 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.002 segundos, usando GeSHi 1.0.8.4
situ
Perlero nuevo
Perlero nuevo
 
Mensajes: 358
Registrado: 2007-04-09 01:44 @114

Publicidad

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

Notapor explorer » 2011-01-31 15:33 @689

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'.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

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

Notapor situ » 2011-01-31 15:53 @703

¡Uf!, tienes razón, =( perdón, no me había dado cuenta.
situ
Perlero nuevo
Perlero nuevo
 
Mensajes: 358
Registrado: 2007-04-09 01:44 @114

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

Notapor situ » 2011-01-31 20:45 @906

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.
situ
Perlero nuevo
Perlero nuevo
 
Mensajes: 358
Registrado: 2007-04-09 01:44 @114

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

Notapor situ » 2011-02-03 14:24 @642

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.001 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.
situ
Perlero nuevo
Perlero nuevo
 
Mensajes: 358
Registrado: 2007-04-09 01:44 @114

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

Notapor wanako » 2011-02-03 17:48 @783

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.
wanako
Perlero nuevo
Perlero nuevo
 
Mensajes: 27
Registrado: 2010-09-23 11:27 @519

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

Notapor situ » 2011-02-03 18:18 @804

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.001 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.
situ
Perlero nuevo
Perlero nuevo
 
Mensajes: 358
Registrado: 2007-04-09 01:44 @114

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

Notapor wanako » 2011-02-03 19:57 @873

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.001 segundos, usando GeSHi 1.0.8.4


Aunque es mejor usar Getopt::Long para un mayor control.
wanako
Perlero nuevo
Perlero nuevo
 
Mensajes: 27
Registrado: 2010-09-23 11:27 @519

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

Notapor situ » 2011-02-03 20:50 @909

Muchas Gracias, funciona correctamente.

Saludos.
situ
Perlero nuevo
Perlero nuevo
 
Mensajes: 358
Registrado: 2007-04-09 01:44 @114

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

Notapor situ » 2011-02-14 07:55 @371

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.002 segundos, usando GeSHi 1.0.8.4


Solamente me hace el output la función "expiracionUsuarios".
situ
Perlero nuevo
Perlero nuevo
 
Mensajes: 358
Registrado: 2007-04-09 01:44 @114

AnteriorSiguiente

Volver a Administración

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado