• Publicidad

Agrupar estadísticas de shell del fichero passwd

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

Agrupar estadísticas de shell del fichero passwd

Notapor alesevimor » 2012-02-01 10:48 @492

¡Hola de nuevo! mira estoy haciendo un script que agrupe las veces que el campo 7 del fichero passwd contiene bin/false, bin/sh y bin/bash. Esto es lo que tengo hecho. El problema es que nunca termina el bucle. Necesito que la salida sea:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
/bin/sh: 7
/bin/false: 19
/bin/bash: 2
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open(F1, "passwd") or die "No existe el fichero";
  2. $contador=0;
  3. $contador1=0;
  4. $contador2=0;
  5. while ($linea=<F1>){
  6.         chomp $linea;
  7.         @line = split(/:/,$linea);
  8.         foreach $x(@line)
  9.         {
  10.         if ($x[7]=="sh")
  11.                 {
  12.                 $contador++;
  13.                 print "/bin/sh:",$contador;
  14.                 }
  15.         if ($x[7]=="bash")
  16.                 {
  17.                 $contador1++;
  18.                 print "/bin/bash:",$contador1;
  19.                 }
  20.         if ($x[7]=="false")
  21.                 {
  22.                 $contador2++;
  23.                 print "/bin/false:",$contador2;
  24.                 }
  25.         }
  26. }
  27. close F1;
Coloreado en 0.007 segundos, usando GeSHi 1.0.8.4


Gracias de antemano.;D
alesevimor
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 25
Registrado: 2012-01-31 15:55 @705

Publicidad

Re: Agrupar estadísticas de shell del fichero passwd

Notapor explorer » 2012-02-01 11:00 @500

Cambia la línea 7 por
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.         @x = split(/:/,$linea);
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4

Elimina las líneas 8, 9 y 25 (las del bucle foreach(), ya que no te hacen falta).

Cambia todos los '==' de los if(), por 'eq', ya que se trata de una comparación alfanumérica, no numérica.

Debes sacar todos los print() que hay dentro de los if(), y ponerlos después del while(), cuando haya terminado el proceso de conteo.
JF^D Perl Programming Language
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 12924
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Agrupar estadísticas de shell del fichero passwd

Notapor alesevimor » 2012-02-01 11:17 @511

Ya lo he hecho pero me da 0 la salida:
alejandroubuntu@alejandroubuntu:~/Escritorio$ perl agrupar.pl passwd
/bin/sh:0
/bin/bash:0
/bin/false:0

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open(F1, "passwd") or die "No existe el fichero";
  2. $contador=0;
  3. $contador1=0;
  4. $contador2=0;
  5. while ($linea=<F1>){
  6.         chomp $linea;
  7.         @x = split(/:/,$linea);
  8.         if ($x[7] eq "sh")
  9.                 {
  10.                 $contador++;
  11.                 }
  12.         if ($x[7] eq "bash")
  13.                 {
  14.                 $contador1++;
  15.  
  16.                 }
  17.         if ($x[7] eq "false")
  18.                 {
  19.                 $contador2++;
  20.                 }
  21. }
  22. print "/bin/sh:$contador\n";
  23. print "/bin/bash:$contador1\n";
  24. print "/bin/false:$contador2\n";
  25. close F1;
Coloreado en 0.007 segundos, usando GeSHi 1.0.8.4
alesevimor
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 25
Registrado: 2012-01-31 15:55 @705

Re: Agrupar estadísticas de shell del fichero passwd

Notapor explorer » 2012-02-01 12:31 @563

Eso significa que el campo 7 no es ni "sh", ni "bash", ni "false".

Si lo que buscas es "/bin/bash", deberás poner exactamente eso.
JF^D Perl Programming Language
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 12924
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Agrupar estadísticas de shell del fichero passwd

Notapor alesevimor » 2012-02-01 12:43 @571

¡Muchas gracias! =)
alesevimor
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 25
Registrado: 2012-01-31 15:55 @705


Volver a Administración

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados

cron