Update /etc/hosts automatically on a DHCP network

If you happen to run your linux system on a virtualized env and you happen to have a DHCP netwotk config you can use a script like the one below to update your hosts file in order for it to use its assigned IP everytime it boots [or whenever you want]. I call this one from my /etc/rc.local script.

#!/bin/bash -x

# Automatically replacing /etc/hosts eth[x] IP with new assigned one from DHCP

IFACE=(0 1 2 3 4 5 6 7 8 9)

x=0
while [ $x != ${#IFACE[@]} ] ; do

    ifconfig eth${IFACE[$x]} 1>/dev/null 2>&1

    if [ $? -eq 0 ] ; then
       eth="eth${IFACE[$x]}"
       break
    else
       let "x = x + 1"
       continue
    fi

done

NEW_IP=`ip addr list $eth | grep "inet " | cut -d ' ' -f 6 | cut -d / -f 1`
CURR_IP=`cat /etc/hosts | head -n 1 | cut -f 1`
HOSTNAME=`hostname`

if [ $NEW_IP == $CURR_IP ] ; then
   exit 0
else
   if [ -z $CURR_IP ] ; then
      sed -r "s/\t{1,}$HOSTNAME/$NEW_IP\t$HOSTNAME/g" /etc/hosts > /tmp/hosts
   else
      sed -r "s/$CURR_IP/$NEW_IP/g" /etc/hosts > /tmp/hosts
   fi
fi

mv -f /tmp/hosts /etc/hosts

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s