xref: /minix3/external/bsd/dhcp/dist/contrib/sethostname.sh (revision 83ee113ee0d94f3844d44065af2311604e9a30ad)
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