Eu sempre me perguntei sobre isso e tentei criar um script como este em / etc / sysconfig / network-scripts / update-hosts: -
#!/bin/sh
set -e
if [ "$IFACE" = lo ]; then
exit 0
fi
SHORT_HOST='hostname'
# Remove current line with hostname at the end of line
sed -i '/'$SHORT_HOST'$/ d' /etc/hosts
ipaddr=$(ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}')
echo "$ipaddr $SHORT_HOST" >>/etc/hosts
Eu teria então que ele fosse executado por meio de um script de inicialização /etc/init.d/updatehosts: -
#!/bin/sh
# chkconfig: 2345 11 89
# description: automatically update /etc/hosts
#
if [ ! -x /etc/sysconfig/network-scripts/update-hosts ]
then
echo "Update hosts: can't update hosts file"
exit
fi
case "$1" in
'start')
# Update hosts:
cp /etc/hosts /etc/hosts.001
/etc/sysconfig/network-scripts/update-hosts
echo "/etc/hosts updated"
;;
'stop')
# Restore hosts:
cp /etc/hosts.001 /etc/hosts
echo "/etc/hosts restored"
;;
esac
ativado usando o chkconfig --add updatehosts
Alguém pode recomendar uma maneira melhor ou melhorias para esse método?