]> git.ipfire.org Git - thirdparty/dhcp.git/commitdiff
Set hostname from value sent by DHCP server
authorTed Lemon <source@isc.org>
Mon, 4 Oct 1999 23:01:27 +0000 (23:01 +0000)
committerTed Lemon <source@isc.org>
Mon, 4 Oct 1999 23:01:27 +0000 (23:01 +0000)
contrib/sethostname.sh [new file with mode: 0644]

diff --git a/contrib/sethostname.sh b/contrib/sethostname.sh
new file mode 100644 (file)
index 0000000..7088c00
--- /dev/null
@@ -0,0 +1,29 @@
+#!/bin/sh
+
+# This script can be installed in /etc/dhclient-enter-hooks to set the client's
+# hostname based either on the hostname that the DHCP server supplied or the
+# hostname in whatever ptr record exists for the assigned IP address.
+
+if [ x$new_host_name = x ]; then
+  ptrname=`echo $new_ip_address \
+          |sed -e \
+  's/\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)/\4.\3.\2.\1.in-addr.arpa/'`
+  (echo "set type=ptr"; echo "$ptrname") |nslookup >/tmp/nslookup.$$
+  set `sed -n -e "s/$ptrname[  ]*\(canonical \)*name *= *\(.*\)/\2 \1/p" \
+                                                       < /tmp/nslookup.$$` _
+  if [ x$1 = x_ ]; then
+    new_host_name=""
+  else
+    if [ $# -gt 1 ] && [ x$2 = xcanonical ]; then
+      new_host_name=`sed -n -e "s/$1[  ]*name *= *\(.*\)/\1/p" \
+                                                       </tmp/nslookup.$$`
+    else
+      new_host_name=$1
+    fi
+  fi
+  rm /tmp/nslookup.$$
+fi
+if [ x$new_host_name != x ]; then
+  hostname $new_host_name
+fi
+