summaryrefslogtreecommitdiff
path: root/bin/changedns
Side-by-side diff
Diffstat (limited to 'bin/changedns') (more/less context) (ignore whitespace changes)
-rwxr-xr-xbin/changedns111
1 files changed, 111 insertions, 0 deletions
diff --git a/bin/changedns b/bin/changedns
new file mode 100755
index 0000000..4760a67
--- a/dev/null
+++ b/bin/changedns
@@ -0,0 +1,111 @@
+#!/bin/bash
+
+SN="`basename $0`" # base portion of our filename
+AE="-a" # switch to add an entry
+RE="-r" # swithc to remove an entry
+EL="/tmp/resolv.conf" # expected location of the system nameserver config file
+ARGS="$@" # friendly variable name for all args
+
+usage(){
+ echo "usage:
+$SN -a {ip} [{ip}...]
+$SN -r {ip} [{ip}...]"
+}
+
+#if are there at least two arguments?
+if [ "$#" -gt 1 ]
+then
+
+ #remove any old resolv.conf file
+ rm .resolve.conf .resolve.old .resolve.new 2> /dev/null
+
+ #cast current nameserver file into OLD
+ cat "$EL" > .resolve.old
+
+ #build IP list
+ for ARG in $ARGS
+ do
+ if [ "$ARG" != "$1" ]
+ then
+ IP_LIST=`echo "$IP_LIST $ARG"`
+ fi
+ done
+
+ #select case on first switch
+ case "$1" in
+
+ #case '-a'
+ "$AE" )
+
+ #for each IP in IP_LIST
+ for IP in $IP_LIST
+ do
+ #add nameserver entery to .newfile
+ echo "nameserver $IP" >> .resolve.conf
+
+ #cat OLD into grep excluding IP lines,
+ #storing results into NEW
+ cat .resolve.old | grep -v "$IP" > .resolve.new
+
+ #set OLD to NEW
+ cat .resolve.new > .resolve.old
+
+ done
+
+ #cat OLD onto end of .newfile
+ cat .resolve.new >> .resolve.conf
+
+ #clean up work files
+ rm .resolve.new .resolve.old
+
+ #move old conf file to old conf file.bak
+ mv "$EL" "$EL.bak"
+
+ #move .newfile to resolve.conf file
+ mv .resolve.conf "$EL"
+
+ echo "Added $IP_LIST to $EL"
+ ;;
+
+ #case '-r'
+ "$RE" )
+
+ #for each IP in IP_LIST
+ for IP in $IP_LIST
+ do
+ #cat OLD into grep excluding IP lines,
+ #storing results into NEW
+ cat .resolve.old | grep -v "$IP" > .resolve.new
+
+ #set OLD to NEW
+ cat .resolve.new > .resolve.old
+
+ done
+
+ #move old conf file to old conf file.bak
+ mv "$EL" "$EL.bak"
+
+ #move .newfile to resolve.conf file
+ mv .resolve.new "$EL"
+
+ echo "Removed $IP_LIST from $EL"
+
+ ;;
+
+ #case else
+ * )
+
+ usage
+ ;;
+
+
+ #end switch
+ esac
+
+#else
+else
+
+ usage
+
+#end
+fi