LinuxParty

Ratio: 5 / 5

Inicio activadoInicio activadoInicio activadoInicio activadoInicio activado
 

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:

Script de Shell de Monitoreo del Servidor

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.

Shell Script para encontrar 777 permisos

Shell Script para encontrar 777 permisos

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:

Informe de monitoreo del servidor

Informe de monitoreo del servidor

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.

Pin It

Escribir un comentario


Código de seguridad
Refescar



Redes:



 

Suscribete / Newsletter

Suscribete a nuestras Newsletter y periódicamente recibirás un resumen de las noticias publicadas.

Donar a LinuxParty

Probablemente te niegues, pero.. ¿Podrías ayudarnos con una donación?


Tutorial de Linux

Nos obligan a moslestarte con la obviedad de que este sitio utiliza Cookies. Ver política