summaryrefslogblamecommitdiffstats
path: root/hooks/29-lookup-hostname
blob: 811c7a9c89bf1999570262ac7f5cf2387a4d4770 (plain) (tree)
1
2
3
4
5
6
7
8
9
                                       


                 
                                            

                                                              
                                                  
                                   
                                                 


                                            
                                         
                                    
                                   


                                                                    





                                                                  



                
              
 
                                                          
                                                         


          


                    
# Lookup the hostname in DNS if not set

lookup_hostname()
{
	[ -z "$new_ip_address" ] && return 1
	# Silly ISC programs love to send error text to stdout
	if type dig >/dev/null 2>&1; then
		h=$(dig +short -x $new_ip_address)
		if [ $? = 0 ]; then
			echo "$h" | sed 's/\.$//'
			return 0
		fi
	elif type host >/dev/null 2>&1; then
		h=$(host $new_ip_address)
		if [ $? = 0 ]; then 
			echo "$h" \
			| sed 's/.* domain name pointer \(.*\)./\1/'
			return 0
		fi
	elif type getent >/dev/null 2>&1; then
		h=$(getent hosts $new_ip_address)
		if [ $? = 0 ]; then
			echo "$h" | sed 's/[^ ]* *\([^ ]*\).*/\1/'
			return 0
		 fi
	fi
	return 1
}

set_hostname()
{
	if [ -z "${new_host_name}${new_fqdn_name}" ]; then
		export new_host_name="$(lookup_hostname)"
	fi
}

if $if_up; then
	set_hostname
fi