Comandos de AWK para la Gestión de Usuarios y Archivos en Linux
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 5,93 KB
Este documento presenta una serie de comandos AWK útiles para la gestión de usuarios, archivos y procesos en sistemas Linux. Los ejemplos cubren diversas tareas, desde la visualización de información hasta la manipulación de archivos y la monitorización del sistema.
Gestión de Usuarios
- Mostrar los logins de todos los usuarios del archivo /etc/passwd:
awk -F: '{ print $1 }' /etc/passwd
- Mostrar los logins, directorios y la shell de todos los usuarios del archivo /etc/passwd, separados por "--":
awk -F: '{ print $1," -- ",$6," -- ",$7}' /etc/passwd
- Mostrar el login y directorio de todos los usuarios que empiecen con "a" del archivo /etc/passwd:
awk -F: '/^a/ { print $1, $6 }' /etc/passwd
- Mostrar los registros de usuarios del archivo /etc/passwd que utilizan la shell csh:
awk -F: '$7 == "/bin/csh" {print $0 }' /etc/passwd
- Mostrar los registros de usuarios sin privilegios del sistema (UID >= 500):
awk -F: '$3>=500 { print $0 }' /etc/passwd
- Mostrar los registros de usuarios del archivo /etc/passwd cuyos nombres de login empiecen con "a" y que utilizan bash:
awk -F: '/^a/ && $7=="/bin/bash" { print $0 }' /etc/passwd
Gestión de Archivos
Se asume la existencia de un archivo llamado personas.txt
con el formato nombre:apellido:numero
.
- Mostrar todos los registros cuyo nombre sea "francisco" del archivo personas.txt:
awk -F: '/^francisco/ { print $0 }' personas.txt
- Mostrar todos los registros con apellido "huerta" del archivo personas.txt:
awk -F: '/huerta/ { print $0 }' personas.txt
- Mostrar los registros del archivo personas.txt cuyo nombre sea "juan":
awk -F: '/^juan/ { print $0 }' personas.txt
- Mostrar todos los registros del archivo personas.txt con su número de registro:
awk -F: '{ print NR,$0 }' personas.txt
Información del Sistema
- Mostrar los usuarios conectados al sistema y su hora de conexión:
who | awk '{ print $1,$4 }'
- Mostrar la fecha en formato día mes año:
date | awk '{ print $3,$2,$6 }'
- Mostrar la hora del sistema:
date | awk '{ print $4 }'
Manipulación de Archivos y Directorios
- Mostrar todos los archivos del directorio actual cuyo nombre empiece con "a":
ls | awk '/^a/'
- Mostrar los permisos ($1) y los nombres de los archivos ($9) del directorio actual (ls -l):
ls -l | awk '{ print $1,$9 }'
- Mostrar los campos del 1 al 5 del listado de ls -l:
ls -l | awk '{ for (x=1; x<=5; x++) { printf "%s ", $x }; printf "\n" }'
- Mostrar el listado de todos los archivos vacíos del directorio actual:
ls -l | awk '$5==0 { print $9 }'
- Mostrar el listado de todos los archivos no vacíos del directorio actual:
ls -l | awk '$5>0 { print $9 }'
- Listar el contenido del directorio actual que empiece con "a":
ls | awk '/^a/ { print $1 }'
Otra forma:
ls | awk '/^a/ { print $1 }' | awk '{ print "cat " $1 }' | bash
- Sumar los tamaños de todos los archivos del directorio actual pertenecientes al usuario "alumno":
ls -l | awk '$3=="alumno" { sum+=$5 } END { print sum }'
Otra forma:
ls -l | awk '$3 == "alumno" { sum+=$5 } END { print sum }'
- Mostrar un listado de todas las carpetas o subcarpetas del directorio actual:
ls -l | awk '/^d/ { print $1," ",$9 }'
- Borrar solo los archivos del directorio actual:
ls -l | grep -v ^d | awk '{ print "rm " $9}' | bash
- Mostrar el listado de archivos del directorio actual en mayúsculas:
ls | awk '{ print toupper($1) }'
Otra forma:
ls | awk '/^d/ { print toupper($1) }'
Monitorización y Seguridad
- Mostrar las características de la CPU de la máquina:
dmesg | awk '/CPU/ { print $1 }'
- Listar el nombre de los usuarios que nunca se han conectado al sistema:
lastlog | awk '$2 == "Never logged in" { print $1 }'
- Mostrar las líneas con "invalid user" y el total de ellas del archivo /var/log/secure:
awk '/invalid user/ { count++; print $0 } END { print count }' /var/log/secure
- Mostrar los ingresos al sistema entre el 1 y el 5 de junio:
last | awk '$2 == "Jun" && ($3 >= 1 && $3 <= 5)'
- Mostrar las ejecuciones del comando su:
awk '/su:/ { print }' /var/log/auth.log
- Mostrar todos los intentos de conexión al sistema fallidos:
awk '/FAILED LOGIN/ { print $0 }' /var/log/secure
- Matar todos los procesos de un determinado tipo (en este ejemplo, la ejecución del editor vi):
ps aux | grep vi | grep -v grep | awk '{ print "kill -9 " $2}' | bash
- Mostrar la cantidad de usuarios en el sistema en este momento:
w | awk 'NR>2 { cont++ } END { print cont }'