Pongo aquí la primera versión de este script que sirve para actualizar las entradas de /etc/hosts con la IP de eth0 o mejor dicho eno1 o algo aún más exótico…según la nomenclatura actual.
Esto va a servir tanto a la navegación local que a dnsmasq en un futuro cuando montaremos una red wifi para casa.
Esta parte de la red wifi todavía no la he tocas, pero se que se va a necesitar, así que me adelanto un poco:
Es script está en su primera esbozo así que va a cambiar pronto. No si quiera lo he probado en un ambiente de testing. así que hay que tomarlo con pinzas
#!/bin/bash
# Hosts IP update
# Apocalipisi 1.9
# 2023-01-26 - maxlinux2000@gmail.com
echo "Espero 30 segundos para que la tarjetas ethernet tenga la dirección IP"
sleep 30
RAMDISK="/dev/shm"
mkdir $RAMDISK/hosts-update
RAMDISK="$RAMDISK/hosts-update"
NetCard=$(ifconfig | head -n1 | cut -d ':' -f1)
IP=$(ip a | grep -A1 "$NetCard" | grep inet | cut -d ' ' -f6 | cut -d '/' -f1)
if [ -z "$IP" ]; then
echo "Network downn"
IP="127.0.0.1"
else
echo IP=$IP
fi
Hostname=$(cat /etc/hostname)
##MailDomain=$(cat /etc/postfix/sni | grep "$Hostname" | cut -d ' ' -f1 | cut -d '.' -f 2,3 | uniq)
#ls /etc/nginx/conf.d/*.$Hostname.conf > $RAMDISK/sities
ls /etc/nginx/conf.d/*.conf |\
grep -v "yunohost_admin.conf" |\
grep -v "ssowat.conf" |\
grep -v "global.conf" > $RAMDISK/sities
:> $RAMDISK/hosts1
#:> $RAMDISK/hosts2
for a in $(cat $RAMDISK/sities); do
site=$(basename $a | sed 's|.conf||')
echo "$IP $site" >> $RAMDISK/hosts1
# echo "$site" >> $RAMDISK/hosts2
done
:> $RAMDISK/hosts3
for site in $(cat $RAMDISK/sities); do
cat /etc/hosts | grep -v "$site" >> $RAMDISK/hosts3
mv $RAMDISK/hosts3 /etc/hosts
done
cat $RAMDISK/hosts1 >> /etc/hosts
rm $RAMDISK/hosts1
rm $RAMDISK/sities
service dnsmasq restart