1 # Lookup the hostname in DNS if not set 2 3 lookup_hostname() 4 { 5 [ -z "${new_ip_address}" ] && return 1 6 local h= 7 # Silly ISC programs love to send error text to stdout 8 if type dig >/dev/null 2>&1; then 9 h=`dig +short -x ${new_ip_address}` 10 if [ $? = 0 ]; then 11 echo "${h}" | sed 's/\.$//' 12 return 0 13 fi 14 elif type host >/dev/null 2>&1; then 15 h=`host ${new_ip_address}` 16 if [ $? = 0 ]; then 17 echo "${h}" \ 18 | sed 's/.* domain name pointer \(.*\)./\1/' 19 return 0 20 fi 21 fi 22 return 1 23 } 24 25 set_hostname() 26 { 27 if [ -z "${new_host_name}" -a -z "${new_fqdn_name}" ]; then 28 export new_host_name="$(lookup_hostname)" 29 fi 30 } 31 32 case "${reason}" in 33 BOUND|INFORM|REBIND|REBOOT|RENEW|TIMEOUT) set_hostname;; 34 esac 35