Script en bash que hace ping a tus servidores

Hace unos días me encontré con el script pingservers de I. Attir y lo modifiqué un poco a mi gusto.

El script toma una lista de direcciones ip de los servidores que queremos revisar, una ip por cada renglón y les hace ping, si obtiene respuesta entonces muestra un mensaje de OK, de lo contrario, muestra un error en la pantalla, hace un nmap a la misma dirección para comprobar que este totalmente fuera de servicio. Además, también guarda un registro de los errores en el archivo noping.log para su futura referencia.

Originalmente el script manda un correo al administrador, pero a mi no me sirve esa opción, primero porque si el que falla es el servidor de Internet, pues nunca voy a recibir el correo, además me gusta ejecutarlo manualmente para revisar la salud de mi red y si hay algún problema atenderlo inmediatamente.

Mis modificaciones incluyen una traducción al español de los mensajes, agregué el comando nmap (que tiene que estar instalado) y le agregué un poco de color.

el script pingservers en acción

Se aceptan sugerencias 🙂 pingservers.sh

Rsync y Parallel, copias de archivos realmente intensas

El otro día pasó a mejor vida un disco duro externo en el que generalmente hago mis respaldos automáticos. Mientras que consigo otro decidí hacer las copias en una carpeta privada en la computadora que funciona como NAS.

rsync parallel
Divide y vencerás.

La cantidad de datos es importante, estoy hablando de unos cientos de gigabytes y la primer copia puede durar varias horas.

Rsync y Parallel

Buscando en internet me topé con este script llamado rsync_parallel que me resultó muy interesante.

Divide y vencerás

Tiene un enfoque muy interesante, primero obtiene una lista completa de los archivos que se van a copiar y luego divide esa lista en varios archivos de una forma equilibrada.

El total de archivos corresponde al número de procesos concurrentes que queremos trabajar, por default es 10 pero se puede cambiar con un parámetro.

Una vez que tenemos nuestras listas el programa parallel inicia la copia de los archivos con rsync y le entrega una lista de los archivos a cada proceso que se ejecuta simultaneamente.

El problema es el ancho de banda.

Gráfica del tráfico por hora

El problema es que ahora tengo 10 procesos peleándose el ancho de banda, que lamentablemente es poco en mi caso. Supongo que una copia con una buena velocidad o de un disco duro a otro la copia de archivos volaría.

También pueden notar que el equipo se puede comportar un poco lento, eso depende de los recursos de su computadora. Eso se debe al uso intensivo del disco duro durante la copia de los archivos.

El uso de parallel es interesante, actualmente estoy jugando con el número de procesos a ejecutar. Si utilizo pocos, más o menos sería lo mismo que ejecutar un rsync simple. Si uso muchos, los pedazos serán más pequeños, pero el uso del disco será mayor.

copiando ando | rsync parallel
Copiando ando …

Les paso el dato por si algún día se les ofrece hacer una copia masiva de archivos.

Enlaces

Script para respaldar bases de datos MySQL versión 2

servidor de base de datos

Hace tiempo hice un script para respaldar bases de datos MySQL, pero dejó de funcionar. Esta nueva versión arregla los problemas del anterior aunque en esencia hace las mismas funciones.

El script

El script anterior dejó de funcionar porque en una actualización del paquete mysql-clients no permitía la comprobación, reparación y optimización de las bases de datos en una sola línea. Así que para evitar este problema tuve que separar estas tareas.

Con este código primero revisamos y reparamos cualquier error que pudieran tener todas las tablas de nuestro servidor de trabajo

mysqlcheck -c -A --auto-repair -h $IP_SERVIDOR_MYSQL -u $USUARIO --password=$DB_PASS

Para luego optimizar las tablas

mysqlcheck -A -o -h $IP_SERVIDOR_MYSQL -u $USUARIO --password=$DB_PASS

Claro que ahora el script se tarda un poco más en ejecutar, pero yo no hice las reglas 🙂 .

Adicionalmente, le hice algunos ajustes para que el nombre de los archivos de volcado incluyera información como la fecha, hora, minutos y segundos.

Si quieren darle un vistazo al código completo verán que es muy simple de ajustar y lo pueden descargar aquí: MySQL Backup Script

Sólo tienen que teclear los valores adecuados para los parámetros WORK_DIR, IP_DEL_SERVIDOR_MYSQL, USUARIO CONTRASEÑA.

Y por su puesto, darle permisos de ejecución al script, Ej.

chmod +x mysql_backup.sh

Si tienen cualquier comentario al respecto se los agradeceré. Espero que les sea de utilidad.