martes, 4 de febrero de 2014

Listado de usuarios con AWK

AWK es un excelente lenguaje de programación, tan flexible que nos permite procesar datos sobre archivos de texto plano de forma muy simple.

El ejemplo que vamos a ver hoy es como podemos extraer datos del archivo /etc/passwd donde se encuentran los usuarios del sistema GNU/Linux.

El script es el siguiente:

#!/usr/bin/awk -f

# | ********************************
# | Reporte del archivo /etc/passwd
# |
# | Autor: Ing. Daniel M. Maldonado
# | Web: www.elcodigok.com.ar
# | Contacto:
# |             @elcodigok
# |
# | ********************************

BEGIN { FS = ":" }
BEGIN { USUARIOS = 0; SISTEMA = 0 }
BEGIN { printf "%-11s%-15s%-15s\n","ID","Usuario","Nombre" }
$3 >= 1000 { printf "%-11s%-15s%-15s\n",$3,$1,$5 ; USUARIOS += 1}
$3 < 1000 { SISTEMA += 1}
END { print "--------------------------" }
END { print USUARIOS " Usuarios registrados" }
END { print SISTEMA " Usuarios de Sistema" }


Lo primero que hacemos es definir un separador de campos, para este ejemplo cada campo del archivo /etc/passwd se encuentra separado por ":"

Inicializamos las variables USUARIOS y SISTEMA a cero (0) para utilizarlos como contadores. Luego se imprime un encabezar con un formato similar a las tabulaciones. $3 hace referencia al campo que corresponde al User ID y si este es mayor a 1000 es por que hace referencia a un usuario registrado, de lo contrario es un usuario de sistema que provablemente se encarga de ejecutar algún proceso como www-data o similares.


Finalmente el script muestra la cantidad de usuarios registrados y de sistema como resultado de sus correspondiente sumas.

Para poder hacer uso de este script solo tenemos que copiarlo y almacenarlo en un archivo por ejemplo listado_usuarios.awk, a éste le damos permiso de ejecución

$ chmod u+x listado_usuarios.awk

y finalmente ejecutamos

$ ./listado_usuarios.awk /etc/passwd

Realmente simple y rápido para comprender el manejo de AWK y el procesamiento de información.

Saludos!

1 comentario:

Entradas populares