Script Despliegue configuración
De jagfloriano.com
Ir a la navegaciónIr a la búsqueda
Ejemplo de script Bash: despliegue de configuración por servidor[editar]
Objetivo del script[editar]
Este script es un ejemplo didáctico cuyo objetivo es explicar distintas lógicas habituales en scripts de administración Linux:
- Iterar sobre ficheros locales
- Extraer información a partir del nombre del fichero
- Verificar conectividad con servidores remotos
- Ejecutar comandos remotos por SSH
- Copiar ficheros con SCP
- Tomar decisiones en función del sistema operativo remoto
El caso práctico simula el despliegue de un fichero de configuración
(collectd.conf) en múltiples servidores.
Código del script[editar]
#!/bin/bash
FICHEROS=$(ls -lrtaR ./*/ | awk '{ if ( $1 !~ /^d/ ) print $9 }' | grep .conf)
FECHA=$(date '+%F.%H:%M')
for fichero in $FICHEROS; do
rutafichero=$(find ./ -name ${fichero})
servidor=$(echo $fichero| cut -d "." -f 1)
echo -e "Pinging ${servidor}\n"
porcent=$(ping -c 2 $servidor | tail -2 | head -1 | cut -d " " -f 6 | sed 's/.$//')
rhversion=$(ssh -q ${servidor} "cat /etc/redhat-release | grep 7. | wc -l")
if [ $porcent -eq 0 ]; then
echo -e "Ping OK\n"
echo -e "Backing up file..."
ssh -q $servidor "sudo cp /etc/collectd.conf /etc/collectd.conf.${FECHA}"
echo -e "sudo cp /etc/collectd.conf /etc/collectd.conf.${FECHA}"
echo -e "Copying collectd.conf to server..."
scp -q ${rutafichero} ${servidor}:/tmp/collectd.conf
ssh -q $servidor "sudo cp /tmp/collectd.conf /etc/collectd.conf"
echo -e "scp ${rutafichero} ${servidor}:/tmp/collectd.conf"
echo -e "Reloading service with new config"
if [ $rhversion -eq 0 ]; then
ssh -q $servidor "sudo service collectd reload"
else
ssh -q $servidor "sudo systemctl restart collectd.service"
fi
fi
done;