LinuxParty
Hace algún tiempo, leí que una de las características distintivas de un administrador / ingeniero de sistemas efectivo es la pereza. Parecía un poco contradictorio al principio, pero el autor procedió a explicar por qué:
Si un administrador de sistemas pasa la mayor parte del tiempo resolviendo problemas y haciendo tareas repetitivas, puede sospechar que no está haciendo las cosas bien. En otras palabras, un administrador / ingeniero de sistemas efectivo debe desarrollar un plan para realizar tareas repetitivas con la menor acción posible de su parte, y debe prever problemas utilizando,
¿Qué es un script de shell?
En pocas palabras, un script de shell 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 kernel de Linux y el usuario final.
De forma predeterminada, 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 funciones que ofrece este shell, puede consultar su página de manual , que se descarga en formato PDF en ( Comandos de Bash ). Aparte de eso, se supone que está familiarizado con los comandos de Linux (de lo contrario, le recomiendo encarecidamente que lea el Tutorial de Linux).
Escribir un script para mostrar información del sistema
Para nuestra conveniencia, vamos a crear un directorio para almacenar nuestros scripts de shell:
# mkdir scripts # cd scripts
Y abra un nuevo archivo de texto llamado info_sistema.sh
con su editor de texto preferido. Comenzaremos insertando algunos comentarios en la parte superior y luego algunos comandos:
#!/bin/bash # Ejemplo de Script escrito para LinuxParty para el artículo: # "Shell Scripting para automatizar las tareas de mantenimiento del sistema Linux" # Esta secuencia de comandos devolverá el siguiente conjunto de información del sistema: # -Información de nombre de usuario: echo -e "\e[31;43m ***** INFORMACIÓN DEL HOSTNAME ***** \e[0m" hostnamectl echo "" # -El uso del espacio en disco del sistema de archivos: echo -e "\e[31;43m ***** SISTEMA DE ARCHIVO DISCO ESPACIO UTILIZADO ***** \e[0m" df -h echo "" # - Memoria libre y usada en el sistema: echo -e "\e[31;43m ***** MEMORIA UTILIZADA Y LIBRE ***** \e[0m" free echo "" # -Sistema de tiempo de actividad y carga: echo -e "\e[31;43m ***** SISTEMA EN TIEMPO Y CARGA ***** \e[0m" uptime echo "" # -Usuarios Conectados: echo -e "\e[31;43m ***** USUARIOS ACTUALMENTE REGISTRADOS ***** \e[0m" who echo "" # -Top 5 procesa en lo que respecta al uso de 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;32m Hecho. \e[0m"
A continuación, dale al script permisos de ejecución:
# chmod a+x info_sistema.sh
y ejecutarlo:
./info_sistema.sh
Tenga en cuenta que los encabezados de cada sección se muestran en color para una mejor visualización:
Esa funcionalidad es proporcionada por este comando:
echo -e "\e[COLOR1;COLOR2m <TU TEXTO AQUÍ> \ e[0m"
Donde COLOR1 y COLOR2 son los colores de fondo y de fondo, respectivamente (más información y opciones se explican en esta entrada de la Arch Linux Wiki (Versión traducida) y <SU TEXTO AQUÍ> es la cadena que desea mostrar en color.
Tareas de automatización
Las tareas que puede necesitar para automatizar pueden variar de un caso a otro. Por lo tanto, no podemos abarcar todos los escenarios posibles en un solo artículo, pero presentaremos tres tareas clásicas que pueden automatizarse mediante shell scripting:
1) actualice la base de datos de archivos local, 2) encuentre (y elimine) los archivos con permisos 777 , y 3) avise cuando el uso del sistema de archivos supera un límite definido.
Vamos a crear un archivo llamado auto_tasks.sh
en nuestro directorio de scripts con el siguiente contenido:
#!/bin/bash # Ejemplo de script para automatizar tareas: # -Actualizar la base de datos del archivo local: echo -e "\e[4;32m ACTUALIZANDO LA BASE DE DATOS DEL ARCHIVO LOCAL \e[0m" updatedb if [ $? == 0 ]; then echo "La base de datos del archivo local se actualizó correctamente." else echo "La base de datos del archivo local no se actualizó correctamente." fi echo "" # -Encuentre y/o elimine archivos con permisos 777. echo -e "\e[4;32m BUSCANDO ARCHIVOS CON 777 PERMISOS \e[0m" # Habilite o modifique cualquiera de las opciones (comente en la otra línea), pero no todas. # ######## ######## ######## # Opción 1: Simplemente cambiar los permisos de archivos ejecutables. chmod -c -x `find -type f -perm 0777` # ######## ######## ######## # Opción 2: Eliminar archivos sin pedir confirmación. # ######## ######## ######## #find -type f -perm 0777 -delete # ######## ######## ######## # Opción 2: Pedir confirmación antes de eliminar archivos. # ######## ######## ######## # find -type f -perm 0777 -exec rm -i {} +; # ######## ######## ######## echo "" # -Alertar cuando el uso del sistema de archivos supera un límite definido echo -e "\e[4;32m COMPROBACIÓN DEL USO DEL SISTEMA DE ARCHIVOS \e[0m" UMBRAL=30 while read line; do # Esta variable almacena la ruta del sistema de archivos como una cadena FILESYSTEM=$(echo $line | awk '{print $1}') # Esta variable almacena el porcentaje de uso (XX%) PERCENTAGE=$(echo $line | awk '{print $5}') # Use el porcentaje sin el signo%. USAGE=${PERCENTAGE%?} if [ $USAGE -gt $UMBRAL ]; then echo "The remaining available space in $FILESYSTEM is critically low. Used: $PERCENTAGE" fi done < <(df -h --total | grep -vi S.Ficheros)
Tenga en cuenta que hay un espacio entre los dos signos <
en la última línea del script.
Usando Cron
Para llevar la eficiencia un paso más allá, no querrá sentarse frente a su computadora y ejecutar esos scripts manualmente. En su lugar, utilizará cron para programar esas tareas para que se ejecuten periódicamente y envía los resultados a una lista predefinida de destinatarios por correo electrónico o los guarda en un archivo que se puede ver con un navegador web.
La siguiente secuencia de comandos (filesystem_usage.sh) ejecutará el conocido comando df -h , formateará la salida en una tabla HTML y la guardará en el archivo report.html :
#!/bin/bash # Sample script to demonstrate the creation of an HTML report using shell scripting # Web directory WEB_DIR=/var/www/html # A little CSS and table layout to make the report look a little nicer echo "<HTML> <HEAD> <style> .titulo{font-size: 1em; color: white; background:#0863CE; padding: 0.1em 0.2em;} table { border-collapse:collapse; } table, td, th { border:1px solid black; } </style> <meta http-equiv='Content-Type' content='text/html; charset=UTF-8' /> </HEAD> <BODY>" > $WEB_DIR/report.html # View hostname and insert it at the top of the html body HOST=$(hostname) echo "Filesystem usage for host <strong>$HOST</strong><br> Last updated: <strong>$(date)</strong><br><br> <table border='1'> <tr><th class='titulo'>Filesystem</td> <th class='titulo'>Size</td> <th class='titulo'>Use %</td> </tr>" >> $WEB_DIR/report.html # Read the output of df -h line by line while read line; do echo "<tr><td align='center'>" >> $WEB_DIR/report.html echo $line | awk '{print $1}' >> $WEB_DIR/report.html echo "</td><td align='center'>" >> $WEB_DIR/report.html echo $line | awk '{print $2}' >> $WEB_DIR/report.html echo "</td><td align='center'>" >> $WEB_DIR/report.html echo $line | awk '{print $5}' >> $WEB_DIR/report.html echo "</td></tr>" >> $WEB_DIR/report.html done < <(df -h | grep -vi filesystem) echo "</table></BODY></HTML>" >> $WEB_DIR/report.html
En nuestro servidor RHEL 7 ( localhost ), esto se ve como sigue:
Puede agregar a ese informe toda la información que desee. Para ejecutar el script todos los días a la 1:30 pm , agregue la siguiente entrada de crontab:
30 13 * * * /root/scripts/filesystem_usage.sh
Resumen
Lo más probable es que piense en otras tareas que desee o necesite automatizar; Como puede ver, el uso de shell scripting simplificará enormemente este esfuerzo. No dude en hacernos saber si encuentra útil este artículo y no dude en agregar sus propias ideas o comentarios a través del formulario a continuación.
-
Scripting
- Iniciar una aplicación o un programa automáticamente desde el Cron en Linux
- Operaciones matemáticas en Shell Scripts
- 30 formas de validar archivos de configuración o scripts en Linux
- Operaciones artiméticas en Shell Scripts
- Cómo intercambiar el contenido de dos archivos en Linux
- Buscar directorios vacíos en Linux y borrarlos si procede.
- Shell Script Linux: Renombra quitando espacios
- Usar con crontab - último sábado del mes
- Shell Script de Linux para analizar un Fichero Access.log
- Analizar ficheros log de Linux con Scripts
- woof Código fuente
- Como tener seguro, protegido y encriptado tu Navegador Web Firefox (versión mejorada - versión 3)
- Arrays en Bash y Loops: iterar a través de los valores de la matriz
- Pasar una variable a AWK mediante la Shell.
- System Tar and Restore: un versátil script de copia de seguridad del sistema para Linux