-rwxr-xr-x | bin/changedns | 111 |
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 @@ | |||
1 | #!/bin/bash | ||
2 | |||
3 | SN="`basename $0`"# base portion of our filename | ||
4 | AE="-a" # switch to add an entry | ||
5 | RE="-r" # swithc to remove an entry | ||
6 | EL="/tmp/resolv.conf"# expected location of the system nameserver config file | ||
7 | ARGS="$@" # friendly variable name for all args | ||
8 | |||
9 | usage(){ | ||
10 | echo "usage: | ||
11 | $SN -a {ip} [{ip}...] | ||
12 | $SN -r {ip} [{ip}...]" | ||
13 | } | ||
14 | |||
15 | #if are there at least two arguments? | ||
16 | if [ "$#" -gt 1 ] | ||
17 | then | ||
18 | |||
19 | #remove any old resolv.conf file | ||
20 | rm .resolve.conf .resolve.old .resolve.new 2> /dev/null | ||
21 | |||
22 | #cast current nameserver file into OLD | ||
23 | cat "$EL" > .resolve.old | ||
24 | |||
25 | #build IP list | ||
26 | for ARG in $ARGS | ||
27 | do | ||
28 | if [ "$ARG" != "$1" ] | ||
29 | then | ||
30 | IP_LIST=`echo "$IP_LIST $ARG"` | ||
31 | fi | ||
32 | done | ||
33 | |||
34 | #select case on first switch | ||
35 | case "$1" in | ||
36 | |||
37 | #case '-a' | ||
38 | "$AE") | ||
39 | |||
40 | #for each IP in IP_LIST | ||
41 | for IP in $IP_LIST | ||
42 | do | ||
43 | #add nameserver entery to .newfile | ||
44 | echo "nameserver $IP" >> .resolve.conf | ||
45 | |||
46 | #cat OLD into grep excluding IP lines, | ||
47 | #storing results into NEW | ||
48 | cat .resolve.old | grep -v "$IP" > .resolve.new | ||
49 | |||
50 | #set OLD to NEW | ||
51 | cat .resolve.new > .resolve.old | ||
52 | |||
53 | done | ||
54 | |||
55 | #cat OLD onto end of .newfile | ||
56 | cat .resolve.new >> .resolve.conf | ||
57 | |||
58 | #clean up work files | ||
59 | rm .resolve.new .resolve.old | ||
60 | |||
61 | #move old conf file to old conf file.bak | ||
62 | mv "$EL" "$EL.bak" | ||
63 | |||
64 | #move .newfile to resolve.conf file | ||
65 | mv .resolve.conf "$EL" | ||
66 | |||
67 | echo "Added $IP_LIST to $EL" | ||
68 | ;; | ||
69 | |||
70 | #case '-r' | ||
71 | "$RE") | ||
72 | |||
73 | #for each IP in IP_LIST | ||
74 | for IP in $IP_LIST | ||
75 | do | ||
76 | #cat OLD into grep excluding IP lines, | ||
77 | #storing results into NEW | ||
78 | cat .resolve.old | grep -v "$IP" > .resolve.new | ||
79 | |||
80 | #set OLD to NEW | ||
81 | cat .resolve.new > .resolve.old | ||
82 | |||
83 | done | ||
84 | |||
85 | #move old conf file to old conf file.bak | ||
86 | mv "$EL" "$EL.bak" | ||
87 | |||
88 | #move .newfile to resolve.conf file | ||
89 | mv .resolve.new "$EL" | ||
90 | |||
91 | echo "Removed $IP_LIST from $EL" | ||
92 | |||
93 | ;; | ||
94 | |||
95 | #case else | ||
96 | *) | ||
97 | |||
98 | usage | ||
99 | ;; | ||
100 | |||
101 | |||
102 | #end switch | ||
103 | esac | ||
104 | |||
105 | #else | ||
106 | else | ||
107 | |||
108 | usage | ||
109 | |||
110 | #end | ||
111 | fi | ||