LINUX – Manejo de errores en scripts bash.-

En los scripts bash , se deben utilizar diferentes métodos para detectar y manejar los posibles errores que pudiesen ocurrir durante la ejecución de nuestros scripts bash.

1.- En Bash, cada ejecución de un comando devuelve un Código de salida al finalizar su ejecución. Un código 0 (cero) indica que el comando se ejecuto en forma correcta. Cualquier código diferente, indica que ocurrió algún error en su ejecución. –

2.- Dentro de un scripts bash, el comando “set -e” le indica que salga inmediatamente (detenga la ejecución) si es que encuentra un código de salida diferente a 0 (cero).- Con esto nos evitamos verificar el estado de salida de cada comando ejecutado, dentro del script :

3.- Mediante el comando TRAP, el cual sirve para interceptar señales y errores. Se puede especificar TRAP para ejecutar comandos específicos. En el siguiente ejemplo, TRAP captura cualquier error (señalizado por la palabra clave ERR) y ejecuta el código de manejo de errores especificado.

4.- En lugar de mostrar el error por consola, se pueden redirigir a un archivo de salida para poder revisar posteriormente.

5.- Se puede crear una función personalizada para manejar diferentes tipos de errores, lo que añadirá flexibilidad a tus scripts.-

Publicado en Unix - Linux | Deja un comentario

LINUX – Script array asociativo para analizar LOG y contar direcciones IP.

Este scripts BASH lee un archivo de LOG y contabiliza las direcciones IP encontradas. Al final muestra un resumen con el total de apariciones de cada Dirección IP encontrada en el archivo de LOG :

Explicación del script:

  1. #!/bin/bash: Línea shebang que especifica que el script debe ejecutarse con bash.
  2. logfile="archivo.log": Variable que contiene el nombre del archivo de registro. Cambia «archivo.log» por el nombre de tu archivo.
  3. ip_counts=([ ]="0"): Inicializa un array asociativo llamado ip_counts. La clave es la dirección IP y el valor es el conteo (inicializado en 0).
  4. while IFS= read -r line: Bucle que lee el archivo de registro línea por línea.
  5. if [[ $line =~ ([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}) ]]: Expresión regular que busca direcciones IP en cada línea. Ajusta la expresión regular si tus direcciones IP tienen un formato diferente.
  6. ip=${BASH_REMATCH[1]}: Asigna la dirección IP encontrada a la variable ip.
  7. ip_counts[$ip]=$((ip_counts[$ip]+1)): Incrementa el conteo para la dirección IP en el array asociativo.
  8. for ip in "${!ip_counts[@]}": Bucle que itera sobre las claves del array asociativo (las direcciones IP).
  9. echo "$ip: ${ip_counts[$ip]}": Imprime la dirección IP y su conteo.
Publicado en Unix - Linux | Deja un comentario

LINUX – Script LOAD Average y memoria utilizada.

El siguiente SCRIPT, realiza un chequeo del porcentaje de uso CPU y del porcentaje de uso de memoria. Si sobrepasan el umbral, generara una alerta. (Nagios)

Publicado en Unix - Linux | Deja un comentario

LINUX – Script bash para enviar correos en forma masiva.

Este es solo un ejemplo de SCRIPTS BASH para enviar correos a múltiples destinatarios. El cual se puede modificar según las necesidades.

El archivo de texto que contiene la información de destinatarios y datos a informar, para este caso de nuestro ejemplo, tiene los campos separados por coma (,) : nombre correo dirección :

Juan Pérez,juan.perez@example.com,Calle Falsa 123

Ana García,ana.garcia@example.com,Avenida Principal 456

Explicación del Script

  1. Verificación del Archivo: Comprueba si el archivo de datos existe.
  2. Lectura del Archivo: Lee el archivo línea por línea, separando los campos por comas.
  3. Manejo de Errores: Verifica si hay datos incompletos y continúa con la siguiente línea si es necesario.
  4. Cuerpo del Mensaje: Crea un mensaje personalizado utilizando las variables leídas.
  5. Envío del Correo: Utiliza mailx para enviar el correo con el asunto especificado.
  6. Confirmación: Imprime un mensaje de confirmación por cada correo enviado.

Publicado en Unix - Linux | Deja un comentario

UNIX_LINUX – Expresiones Regulares Extendidas en Scripts Bash.

Las expresiones regulares extendidas (ERE) son una herramienta poderosa en Bash que permiten hacer coincidir patrones complejos en cadenas de texto. Estas expresiones son más avanzadas que las expresiones regulares básicas y ofrecen más funcionalidades, como la inclusión de  metacaracteres   adicionales y operadores que hacen que la búsqueda y manipulación de texto sea más eficiente.

Para utilizar expresiones regulares extendidas en Bash, a menudo se emplea el comando grep -E o egrep (que es equivalente a grep -E).

Algunos ejemplos de uso practico:

1.- Para buscar las líneas que contienen «hola» o «buenos», puedes usar:

2.- Si deseas encontrar líneas que contengan letras mayúsculas seguidas de cualquier número de letras minúsculas, puedes utilizar:

3.- Para encontrar líneas que contengan números repetidos (por ejemplo, dos dígitos seguidos), puedes usar:

4.- Si deseas listar los archivos en un directorio que terminan en .txt o .md, puedes hacer:

5.- Puedes usar expresiones regulares extendidas con sed para reemplazar texto. Por ejemplo, reemplazar «hola» por «adiós»:

6.- Para encontrar la palabra «hola» que no esté contenida en otras palabras, puedes usar:

  • \b: Indica un límite de palabra (inicio o fin de una palabra).
  • Otra opción es usar la opción -w de grep, que busca palabras completas. Así, puedes lograr el mismo resultado más fácilmente:

7.- Para encontrar direcciones de correo electrónico en un archivo, puedes usar:

8.- Para encontrar números de teléfono en un formato específico (por ejemplo, (123) 456-7890), puedes usar:

9.- Para encontrar todas las palabras que comienzan con la letra «a» en un archivo, usa:

10.- Supongamos que deseas encontrar frases que contengan una palabra repetida, como «hola hola». Puedes usar:

11.- Para buscar fechas en el formato DD-MM-YYYY, puedes usar:

12.- Para buscar códigos postales en formato de cinco dígitos, puedes usar:

13.- Reemplazar múltiples espacios por un solo espacio :

14.- Reemplazar múltiples patrones:

15.- Expresión regular para validar un email :

Para sacar las direcciones de correo desde un archivo.

16.- Expresión regular para buscar la palabra «vieja» y reemplazarla por «nueva» :

17.- Expresión regular para fechas en formato YYYY-MM-DD:

Para extraer las fechas en formato DD/MM/AAA desde un archivo.

18.- Para extraer las direcciones IP desde un archivo :

19.- Expresión regular para extraer el dominio:

20.- Buscar líneas que contengan palabras que empiecen y terminen con la misma letra:

21.- Buscar líneas que contengan un número de 3 a 5 dígitos :

22.- Buscar líneas que contengan «gato» o «perro» (opcionalmente con «s» al final):

23.- Reemplazar la primera palabra de cada línea por «Hola»:

24.- Reemplazar el primer y tercer dígito de un número de teléfono por «X»:

25.- Buscar contraseñas que tengan al menos 8 caracteres, incluyendo al menos una mayúscula, una minúscula y un número:

26.- Buscar errores en un archivo de registro que contengan «ERROR» seguido de un código de error:

Publicado en Unix - Linux | Deja un comentario