LinuxParty
En este artículo te vamos a mostrar 5 shell scripts que te ayudarán a proteger tu servidor, este artículo debes unirlo a estos otros, que siempre te resultarán de lo más interesante.
Empezaremos por el archivo de configuración, al que llamaremos "reiniciaservicios.conf" y lo vamos a colocar el en directorio /root/bin, si no tienes creado todavía el directorio, créalo. Además, todos los scripts expuestos en este artículo, deberán estar dentro del mencionado directorio.
Debemos informar que estos scripts se presentan sin garantía, tal vez necesiten algunas modificaciones propias de su servidor y distribución Linux. Su incorrecta disposición puede hacer que el servidor quede sin servicios, si no está acostumbrado a manejar este tipo de scripts, hágase acompañar de un experto o bien pida los servicios de un profesional. Puede solicitar nuestros servicios profesionales en ExtreHost para que le configuremos el servidor para cualquier cosa que necesite. por un módico precio.
La variable B, contiene la carga máxima que le vamos a permitir al servidor, donde empiezan a fallar los servicios, que se extrae del comando 'uptime', debes asignarle un valor entre 2.45 y 3.45 (para este ejemplo)
# Reinicia Servicios configuración. # B indica la máxima carga B=3.45 # Indica la ruta del archivo de registros REGISTROSLOGS="/root/mislogs.log"
Este es el script principal, cuando la carga máxima llega o supera a B, se ejecutará este script, al cual llamaremos desde un script llamado "cargatrabajo.sh" que veremos más adelante.
Nombre del script: reiniciaservicios.sh
#!/bin/bash load_conf() { CONF="/root/bin/reiniciaservicios.conf" if [ -f "$CONF" ] && [ ! "$CONF" == "" ]; then source $CONF else head echo "\$CONF not found." exit 1 fi } load_conf # Comprobar que el campo "uptime" a leer, es el correcto A=`uptime | awk '{print $10}' | cut -d, -f1` if [ `expr $A : '[0-9].[0-9]*'` -eq ${#A} ] ; then echo " " else A=`uptime | awk '{print $11}' | cut -d, -f1` fi PARAR=1 # Bandera del bucle UNAVEZ=1 # Bandera del buble while [[ $( echo "$A > $B" | bc ) -eq 1 ]]; do if [ $PARAR -eq 1 ] ; then if [ $UNAVEZ -eq 1 ] ; then /sbin/service httpd stop >> $REGISTROSLOGS printf "\n" >> $REGISTROSLOGS /sbin/service mysqld stop >> $REGISTROSLOGS printf "\n" >> $REGISTROSLOGS sleep 3 fi UNAVEZ=0 # Ya no leera "if" durante el bucle fi PARAR=0 # Ya no leera "if" durante el bucle A=`uptime | awk '{print $10}' | cut -d, -f1` if [ `expr $A : '[0-9].[0-9]*'` -eq ${#A} ] ; then source $CONF else A=`uptime | awk '{print $11}' | cut -d, -f1` fi sleep 2 done if [ $PARAR -eq 0 ] ; then sleep 3 /sbin/service mysqld start >> $REGISTROSLOGS printf "\n" >> $REGISTROSLOGS /sbin/service httpd start >> $REGISTROSLOGS printf "\n" >> $REGISTROSLOGS fi
Este script, debes incluirlo en tu crond, puedes incluirlo en /etc/cron.d/ creando un fichero llamado "cargatrabajo.cron" e incluir:
0-59/1 * * * * root /root/bin/cargatrabajo.sh
O si lo ingresas en crontab con "crontab -e" haz la entrada que tenga:
0-59/1 * * * * /root/bin/cargatrabajo.sh
Este sería: cargatrabajo.sh
#!/bin/sh # El script debe insertarse en el crontab de root y debe # copiarse en el directorio /root/bin, cree la entrada # escribiendo "crontab -e" e inserte: # -------------------------------------------------- # # 0-59/1 * * * * /root/bin/cargatrabajo.sh >/dev/null 2>&1 # --------------------------------------------------- load_conf() { CONF="/root/bin/reiniciaservicios.conf" if [ -f "$CONF" ] && [ ! "$CONF" == "" ]; then source $CONF else head echo "\$CONF not found." exit 1 fi } load_conf TMP_PREFIX='/tmp/cargatrabaj' TMP_FILE="mktemp $TMP_PREFIX.XXXXXXXX" FINMSG=0 A=`uptime | awk '{print $10}' | cut -d, -f1` if [ `expr $A : '[0-9].[0-9]*'` -eq ${#A} ] ; then source $CONF else A=`uptime | awk '{print $11}' | cut -d, -f1` fi echo "¿ $A > $B ?" if [ $( echo "$A > $B" | bc ) -eq 1 ]; then FINMSG=1 echo "==============================" >> $REGISTROSLOGS echo "START: $A > $B - `date` - `uptime` - `hostname`" >> $REGISTROSLOGS echo "`/root/bin/conexiones.sh`" >> $REGISTROSLOGS echo "==============================" >> $REGISTROSLOGS /root/bin/reiniciaservicios.sh ; sleep 3 /root/bin/cargatrabajo.sh fi if [ $FINMSG -eq 1 ] ; then printf "\n" >> $REGISTROSLOGS echo "END: $A > $B - `date` - `uptime` - `hostname`" >> $REGISTROSLOGS FINMSG=0 fi rm -fv $TMP_PREFIX.*
Este script, sólo sirve para vigilar las conexiones
vivoconexiones.sh
for i in {1..20}; do clear; conexiones.sh ; date; diskmax.sh; sleep 3; clear; conexiones.sh ; date; diskmax.sh; sleep 3; clear; conexiones.sh ; date; diskmax.sh; sleep 3; clear; conexiones.sh ; date; diskmax.sh; sleep 3; done echo "20 loops terminados. Vuela a arrancar: $_ "
El script anterior está basado en este, al que llamaremos:
conexiones.sh
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n | tail NumConex=`netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | sort -nr | uniq -c | awk '{sum+=$1} END {print sum}'` A=`uptime | awk '{print $10}' | cut -d, -f1` if [ `expr $A : '[0-9].[0-9]*'` -eq ${#A} ] ; then echo "Number"; else A=`uptime | awk '{print $11}' | cut -d, -f1` fi echo "$NumConex conexiones, -> carga trabajo: $A"
Script que comprueba que no estén todos los inodos del disco duro completos, puedes hacer una versión modificada de este script, para simplemente, comprobar que no esté lleno.
A este script le llamaremos: diskmax.sh
#!/bin/sh # El script debe insertarse en el crontab de root y debe # copiarse en el directorio /root/bin, cree la entrada # escribiendo "crontab -e" e inserte: # -------------------------------------------------- # 0-59/1 * * * * /root/bin/diskmax.sh >/dev/null 2>&1 # --------------------------------------------------- MAX=85 PART=sda1 USE=`df -ih |grep $PART | awk '{ print $5 }' | cut -d'%' -f1 | uniq -c | awk '{ print $2 }'` echo "¿ $USE > $MAX ?" if [ $USE -gt $MAX ]; then # echo "Percent used: $USE" # echo "Superado: $MAX" /root/bin/optimiza.sh ; /root/bin/reiniciaservicios.sh fi
Puede contratar ExtreHost para temas profesionales con sus servidores. No lo dude, contáctenos.

-
KDE
- KDE Plasma 6.3.2 lanzado con soporte para WebP animado y GIF para Spectacle
- Se lanzó KDE Plasma 6.3.1 con mejoras en Plasma Discover y numerosas correcciones de errores
- Se lanzó KaOS Linux 2025.01 con Linux Kernel 6.12 LTS y KDE Plasma 6.2
- KDE Linux: La Nueva Distribución Independiente del Proyecto KDE
- KDE Plasma 6.2.1 mejora el soporte para juegos XWayland y corrige varios errores
- KDE neon 6.2 ya está disponible con el escritorio KDE Plasma 6.2, basado en Ubuntu 24.04 LTS
- Se lanzó oficialmente el entorno de escritorio KDE Plasma 6.2: estas son sus novedades
- Esta distribución de Linux está inspirada en la interfaz de Windows y funciona sorprendentemente bien
- Desarrollador de KDE: ¿Por qué Plasma 6.2 incluye una ventana emergente anual para donaciones?
- KaOS Linux 2024.07 lanzado con KDE Plasma 6.1 y kernel de Linux 6.9
- KDE Frameworks 6.4 ya está disponible con soporte ColorScheme-Accent y JXR
- Lanzamiento oficial del entorno de escritorio KDE Plasma 6.1, esto es lo nuevo
- KDE Plasma 5.27.11 LTS corrige la compatibilidad con Flatpak en Discover y Plasma Wayland
- KDE Slimbook V es la primera PC portátil Linux del mundo que se envía con KDE Plasma 6
- La primera distribución de Linux que ofrece un entorno KDE Plasma 6 puro ya está aquí