Skip to content

Instantly share code, notes, and snippets.

@mbrownnycnyc
Created May 24, 2013 15:41
Show Gist options
  • Star 10 You must be signed in to star a gist
  • Fork 6 You must be signed in to fork a gist
  • Save mbrownnycnyc/5644413 to your computer and use it in GitHub Desktop.
Save mbrownnycnyc/5644413 to your computer and use it in GitHub Desktop.
script for use with `nsupdate` to update linux client DNS on a DNS server... in this instance, I am targeting a Windows Server DNS server 2003/2008/2012+. I have manually created the PTR and A records once, and granted the Everyone ACE the "Write" permission in the DACL of the PTR and A records.
#!/bin/sh
#original from http://community.spiceworks.com/topic/262635-linux-does-not-register-on-the-windows-ad-dns
# reply of Phil6196 Oct 1, 2012 at 12:41 AM (EDT)
ADDR=`/sbin/ifconfig eth0 | grep 'inet addr' | awk '{print $2}' | sed -e s/.*://`
HOST=`hostname`
echo "update delete $HOST A" > /var/nsupdate.txt
echo "update add $HOST 86400 A $ADDR" >> /var/nsupdate.txt
echo "update delete $HOST PTR" > /var/nsupdate.txt
echo "update add $HOST 86400 PTR $ADDR" >> /var/nsupdate.txt
nsupdate /var/nsupdate.txt
@DeVogelRyan
Copy link

Hey I don't know if this is related but I need nsupdate to be one line for a specific use case is this possible?

@barrymw
Copy link

barrymw commented Jun 14, 2023

Hey I don't know if this is related but I need nsupdate to be one line for a specific use case is this possible?

It depends on what you define as 'one line'. The nsupdate commands (update add ...) have to be on separate lines, i.e. they are newline delimited. You could use the printf command to have it as a single line and use '\n' newline character where needed, but it gets ugly:

ipaddress=$(hostname -i); arpa=$(printf 'arpa.in-addr.%s.' "$ipaddress" | tac -s.); fqdn=$(hostname -f).; mydnsserver=$(nslookup -type=soa $(hostname -d) | grep origin | awk -F'= ' '{print $2}'); printf "server $mydnsserver\nupdate add $fqdn 3600 IN A $ipaddress\nsend\nupdate add $arpa 3600 IN PTR $fqdn\nsend\nquit\n" | nsupdate

I haven't tested this btw, but the general structure should work. Remove the | nsupdate to check the syntax.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment