Uso de scripting de shell para automatizar tareas de mantenimiento del sistema Linux - Parte 4

Uso de scripting de shell para automatizar tareas de mantenimiento del sistema Linux - Parte 4

Hace algún tiempo leí que una de las características distintivas de un administrador / ingeniero efectivo del sistema es la pereza. Parecía un poco contradictorio al principio, pero el autor procedió a explicar por qué:

Serie RHCE: automatizar tareas de mantenimiento del sistema Linux - Parte 4

Si un sysadmin pasa la mayor parte de su tiempo resolviendo problemas y haciendo tareas repetitivas, puede sospechar que no está haciendo las cosas muy bien. En otras palabras, un administrador / ingeniero efectivo del sistema debe desarrollar un plan para realizar tareas repetitivas con la menor acción de su parte posible, y debe prever problemas utilizando,

Por ejemplo, las herramientas revisadas en la Parte 3 - Monitorear los informes de actividad del sistema utilizando los conjuntos de herramientas de Linux de esta serie. Por lo tanto, aunque él o ella no parecen estar haciendo mucho, es porque la mayoría de sus responsabilidades se han atendido con la ayuda de las secuencias de comandos, que es de lo que vamos a hablar en este tutorial.

¿Qué es un script de shell??

En pocas palabras, un script de shell no es nada más y nada menos que un programa que se ejecuta paso a paso por un shell, que es otro programa que proporciona una capa de interfaz entre el núcleo de Linux y el usuario final.

Por defecto, el shell utilizado para las cuentas de usuario en Rhel 7 es bash (/bin/bash). Si desea una descripción detallada y algunos antecedentes históricos, puede consultar este artículo de Wikipedia.

Para obtener más información sobre el enorme conjunto de características proporcionadas por este caparazón, es posible que desee consultar su página del hombre, que se descarga en formato pdf en (comandos bash). Aparte de eso, se supone que está familiarizado con los comandos de Linux (si no, le aconsejo encarecidamente que pase por una guía de novatos al artículo de Sysadmin en Tecmenta.comunicarse antes de continuar). Ahora comencemos.

Escribir un script para mostrar información del sistema

Para nuestra conveniencia, creemos un directorio para almacenar nuestros scripts de shell:

# scripts mkdir # scripts de CD 

Y abra un nuevo archivo de texto llamado información del sistema.mierda con su editor de texto preferido. Comenzaremos insertando algunos comentarios en la parte superior y algunos comandos después:

#!/bin/bash # script de muestra escrito para la parte 4 de la serie RHCE # Este script devolverá el siguiente conjunto de información del sistema: # -hostname Information: echo -e "\ e [31; 43m ***** Información del nombre de host ***** \ e [0m "hostnamectl echo" " # -Scil de disco del sistema Uso del espacio: echo -e" \ e [31; 43m ***** Uso del espacio del disco del sistema de archivos ***** \ e [0m "df -h echo" " # -Free y usado memoria en el sistema: echo -e" \ e [31; 43m ***** Memoria gratuita y usada ***** \ e [0m "Free echo" " # -SeStstem Time and Load: echo -e" \ e [31; 43m ***** Tiempo de actividad del sistema y carga ***** \ e [0m "Ettime Echo" " # -Logged -In usuarios: echo -e" \ e [31; 43m ***** Usuarios actualmente iniciados ***** \ e [0m "Who Hele" " # -Top 5 procesos en lo que respecta al uso de la memoria echo -e" \ e [31; 43m ***** Top 5 procesos de consumo de memoria ***** \ E [0m "PS -EO%MEM,%CPU, Comm --Sort = -%Mem | Head -N 6 ECHO" "ECHO -E" \ E [1; 32MDone.\ E [0m " 

A continuación, proporcione los permisos de ejecución del script:

# CHMOD +X SYSTEM_INFO.mierda 

y ejecutarlo:

./información del sistema.mierda 

Tenga en cuenta que los encabezados de cada sección se muestran en color para una mejor visualización:

Script de shell de monitoreo del servidor

Esa funcionalidad es proporcionada por este comando:

echo -e "\ e [Color1; color2m\ E [0m " 

Dónde Color1 y Color2 son los colores de primer plano y de fondo, respectivamente (se explican más información y opciones en esta entrada desde la wiki de Arch Linux) y es la cadena que quieres mostrar en color.

Automatizaciones de tareas

Las tareas que puede necesitar automatizar puede variar de un caso a otro. Por lo tanto, no podemos cubrir todos los escenarios posibles en un solo artículo, pero presentaremos tres tareas clásicas que se pueden automatizar utilizando scripting de shell:

1) Actualizar la base de datos de archivos local, 2) buscar (y alternativamente eliminar) archivos con 777 permisos, y 3) Alerta cuando el uso del sistema de archivos supera un límite definido.

Creemos un archivo llamado Auto_tasks.mierda En nuestro directorio de scripts con el siguiente contenido:

#!/bin/bash # script de muestra para automatizar tareas: # -update local de datos de archivos: echo -e "\ e [4; 32mActualización de la base de datos de archivos locales\ e [0m "actualizadob si [$? == 0]; Luego se eco "la base de datos de archivos local se actualizó correctamente."Else echo" La base de datos de archivos local no se actualizó correctamente."Fi echo" " # -Find y / o eliminar archivos con 777 permisos. echo -e "\ e [4; 32MBuscando archivos con 777 permisos\ e [0m " # Habilite cualquiera de las opciones (comente la otra línea), pero no ambas. # Opción 1: Eliminar archivos sin solicitar la confirmación. Asume la versión GNU de Find. #Find -Type F -Perm 0777 -Delete # Opción 2: solicite confirmación antes de eliminar archivos. Más portátil en todos los sistemas. encontrar -type f -Perm 0777 -exec rm -i  +; echo "" # -alert cuando el uso del sistema de archivos supera un límite definido echo -e "\ e [4; 32mVerificación de uso del sistema de archivos\ e [0m "umbral = 30 While Read Line; do # Esta variable almacena la ruta del sistema de archivos como un sistema de archivos de cadena = $ (echo $ line | awk 'imprime $ 1') # Esta variable almacena el porcentaje de uso (xx% ) Porcentaje = $ (echo $ line | awk 'imprime $ 5') # use porcentaje sin el signo %. Uso = $ porcentaje%? if [$ use -gt $ umbral]; Entonces se eco "El espacio disponible restante en $ files System es críticamente bajo. Usado: $ porcentaje "FI hecho < <(df -h --total | grep -vi filesystem) 

Tenga en cuenta que hay un espacio entre los dos < firma en la última línea del guión.

Script shell para encontrar 777 permisos

Usando cron

Para tomar eficiencia un paso más allá, no querrá sentarse frente a su computadora y ejecutar esos scripts manualmente. Más bien, usarás cron Para programar esas tareas para que se ejecuten periódicamente y envíe los resultados a una lista predefinida de destinatarios por correo electrónico o guárdelos a un archivo que se pueda ver utilizando un navegador web.

El siguiente script (filesystem_usage.sh) ejecutará el conocido DF -H comando, formatear la salida en una tabla HTML y guárdela en el informe.html archivo:

#!/bin/bash # script de muestra para demostrar la creación de un informe HTML usando shell scripting # directory web web_dir =/var/www/html # un pequeño diseño de CSS y mesa para que el informe se vea un poco más agradable "   .titulo font-size: 1em; color blanco; Antecedentes:#0863CE; relleno: 0.1em 0.2em; tabla colapso de borde: colapso;  tabla, td, th borde: 1px sólido negro;  "> $ Web_dir/informe.html # ver el nombre de host e insértelo en la parte superior del host html host = $ (hostname) echo "uso del sistema de archivos para host $ Anfitrión
Última actualización: $ (fecha)

">> $ web_dir/report.HTML # Lea la salida de DF -H Line by Line mientras lea la línea; hacer eco "">> $ web_dir/report.html hecho < <(df -h | grep -vi filesystem) echo "
Sistema de archivos Tamaño Usar %
">> $ web_dir/report.html echo $ line | AWK 'imprimir $ 1' >> $ web_dir/report.html echo "">> $ web_dir/report.html echo $ line | AWK 'imprimir $ 2' >> $ web_dir/report.html echo "">> $ web_dir/report.html echo $ line | AWK 'imprimir $ 5' >> $ web_dir/report.html echo "
">> $ web_dir/report.html

En nuestro Rhel 7 servidor (192.168.0.18), esto se ve como sigue:

Informe de monitoreo del servidor

Puede agregar a ese informe tanta información como desee. Para ejecutar el guión todos los días en 1:30 de la tarde, Agregue la siguiente entrada de Crontab:

30 13 * * */root/scripts/filesystem_usage.mierda 

Resumen

Lo más probable es que piense en varias otras tareas que desea o necesita automatizar; Como puede ver, el uso de scripting de shell simplificará enormemente este esfuerzo. No dude en informarnos si encuentra útil este artículo y no dude en agregar sus propias ideas o comentarios a través del siguiente formulario.