1*83ee113eSDavid van Moolenbroek#!/bin/sh 2*83ee113eSDavid van Moolenbroek 3*83ee113eSDavid van Moolenbroek# This script can be installed in /etc/dhclient-enter-hooks to set the client's 4*83ee113eSDavid van Moolenbroek# hostname based either on the hostname that the DHCP server supplied or the 5*83ee113eSDavid van Moolenbroek# hostname in whatever ptr record exists for the assigned IP address. 6*83ee113eSDavid van Moolenbroek 7*83ee113eSDavid van Moolenbroekif [ x$new_host_name = x ]; then 8*83ee113eSDavid van Moolenbroek ptrname=`echo $new_ip_address \ 9*83ee113eSDavid van Moolenbroek |sed -e \ 10*83ee113eSDavid van Moolenbroek 's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)/\4.\3.\2.\1.in-addr.arpa/'` 11*83ee113eSDavid van Moolenbroek (echo "set type=ptr"; echo "$ptrname") |nslookup >/tmp/nslookup.$$ 12*83ee113eSDavid van Moolenbroek set `sed -n -e "s/$ptrname[ ]*\(canonical \)*name *= *\(.*\)/\2 \1/p" \ 13*83ee113eSDavid van Moolenbroek < /tmp/nslookup.$$` _ 14*83ee113eSDavid van Moolenbroek if [ x$1 = x_ ]; then 15*83ee113eSDavid van Moolenbroek new_host_name="" 16*83ee113eSDavid van Moolenbroek else 17*83ee113eSDavid van Moolenbroek if [ $# -gt 1 ] && [ x$2 = xcanonical ]; then 18*83ee113eSDavid van Moolenbroek new_host_name=`sed -n -e "s/$1[ ]*name *= *\(.*\)/\1/p" \ 19*83ee113eSDavid van Moolenbroek </tmp/nslookup.$$` 20*83ee113eSDavid van Moolenbroek else 21*83ee113eSDavid van Moolenbroek new_host_name=$1 22*83ee113eSDavid van Moolenbroek fi 23*83ee113eSDavid van Moolenbroek fi 24*83ee113eSDavid van Moolenbroek rm /tmp/nslookup.$$ 25*83ee113eSDavid van Moolenbroekfi 26*83ee113eSDavid van Moolenbroekif [ x$new_host_name != x ]; then 27*83ee113eSDavid van Moolenbroek hostname $new_host_name 28*83ee113eSDavid van Moolenbroekfi 29*83ee113eSDavid van Moolenbroek 30