Formas de ejecutar Múltiples Comandos a Través de una conexión SSH.

1.-  Usar comandos separados por punto y coma :

Este ejemplo cambiará al directorio /var/log, contará la cantidad de líneas que contienen “error” en el archivo syslog y mostrará las últimas 5 líneas del archivo syslog.

2.- Usar comandos separados por doble ampersand :

Este ejemplo cambiará al directorio /var/log, creará un archivo comprimido de syslog como syslog.gz y eliminará el archivo syslog original solo si los comandos anteriores tuvieron éxito.

3.- Usar comandos separados por un solo ampersand :

Este ejemplo buscará todos los archivos .txt en el directorio raíz y guardará los resultados en archivos.txt, esperará 5 segundos e imprimirá “¡Terminado!”, todo en paralelo.

4.- Usar la agrupación de comandos :

Este ejemplo ejecutará dos grupos de comandos en paralelo: el primer grupo cambiará al directorio /var/log y guardará todas las líneas que contienen “error” del archivo syslog en errores.log, y el segundo grupo cambiará al directorio /var/tmp y mostrará el uso del disco para cada elemento.

5.- Usar una subcapa :

Este ejemplo cambiará al directorio /var/log, contará la cantidad de líneas que contienen “error” en el archivo syslog y mostrará las últimas 5 líneas del archivo syslog, todo dentro de una subcapa (Ejecutar una subcapa (subshell) en Bash ofrece varias ventajas, incluyendo la capacidad de modificar el entorno de forma temporal, ejecutar comandos en paralelo y aislar procesos. Las subcapas permiten crear entornos de ejecución independientes dentro de los scripts, lo que facilita la gestión de procesos y la ejecución de comandos sin afectar el entorno principal).

6.- Ejecutar un script local de forma remota :

Para ejecutar un script local en el servidor remoto, se  ejecuta de esta forma..

7.- Usar un Here Document :

Este ejemplo cambiará al directorio /var/log, contará la cantidad de líneas que contienen “error” en el archivo syslog y mostrará las últimas 5 líneas del archivo syslog en el host remoto.

Publicado en Unix - Linux | Deja un comentario

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