Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
19 | kardasa | 1 | #!/bin/sh |
2 | |||
3 | ##################################################################### |
||
4 | # Script to generate bind configuration for many domains for |
||
5 | # one server |
||
6 | # |
||
7 | # This script is distributed in the hope that it will be useful, |
||
8 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
||
9 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||
10 | # GNU General Public License for more details. |
||
11 | # Author: Andrzej KardaĆ |
||
12 | # License: GPLv3 |
||
13 | # The full version of the licencse can be obtainted by visiting: |
||
14 | # http://www.gnu.org/licenses/gpl.html |
||
15 | ####################################################################### |
||
16 | BIND_DIR=/chroot/dns/var/bind/ |
||
17 | MASTER_CONF_FILE=${BIND_DIR}conf/master.conf |
||
18 | SLAVE_CONF_FILE=${BIND_DIR}conf/slave.conf |
||
19 | SLAVE_DIR=slave |
||
20 | MASTER_DIR=master |
||
21 | SERIAL=$(date +"%Y%m%y")01 |
||
22 | MASTER_SERVER_IP="X.X.X.X" |
||
23 | SLAVE_SERVERS_NAMES="nameserver1 nameserver2" |
||
24 | HOSTNAME=short_server_name |
||
25 | CNAMES="www" |
||
26 | MX= |
||
27 | MX_IP=X.X.X.X |
||
28 | FILE=${2} |
||
29 | |||
30 | #Checking the list of parameters |
||
31 | |||
32 | if ( [ $# -lt 2 ] ) then |
||
33 | |||
34 | echo "To few arguments were passed to script" |
||
35 | echo "Usage ./bind_config.sh type zone_list_file" |
||
36 | echo "Type can be master | slave" |
||
37 | |||
38 | exit 0 |
||
39 | fi |
||
40 | |||
41 | #Creating the zone files |
||
42 | |||
43 | if [ "${1}" = "master" ]; then |
||
44 | |||
45 | while read line |
||
46 | do |
||
47 | echo "zone \"$line\" IN { type master; file \"${MASTER_DIR}/$line\"; };" >> ${MASTER_CONF_FILE} |
||
48 | echo "" > ${BIND_DIR}${MASTER_DIR}/$line |
||
49 | echo "\$TTL 600" >> ${BIND_DIR}${MASTER_DIR}/$line |
||
50 | echo "; $line" >> ${BIND_DIR}${MASTER_DIR}/$line |
||
51 | echo "@ IN SOA ${HOSTNAME}.$line. hostmaster.$line. (" >> ${BIND_DIR}${MASTER_DIR}/$line |
||
52 | echo " ${SERIAL} ; serial" >> ${BIND_DIR}${MASTER_DIR}/$line |
||
53 | echo " 12h ; refresh" >> ${BIND_DIR}${MASTER_DIR}/$line |
||
54 | echo " 1h ; retry" >> ${BIND_DIR}${MASTER_DIR}/$line |
||
55 | echo " 2w ; expire" >> ${BIND_DIR}${MASTER_DIR}/$line |
||
56 | echo " 1h ; minimum" >> ${BIND_DIR}${MASTER_DIR}/$line |
||
57 | echo " )" >> ${BIND_DIR}${MASTER_DIR}/$line |
||
58 | echo "" >> ${BIND_DIR}${MASTER_DIR}/$line |
||
59 | echo " IN NS ${HOSTNAME}.$line." >> ${BIND_DIR}${MASTER_DIR}/$line |
||
60 | for server in ${SLAVE_SERVERS_NAMES} |
||
61 | do |
||
62 | echo " IN NS $server." >> ${BIND_DIR}${MASTER_DIR}/$line |
||
63 | done |
||
64 | if [ ${MX} ]; then |
||
65 | echo " IN MX 10 ${MX}.$line." >> ${BIND_DIR}${MASTER_DIR}/$line |
||
66 | fi |
||
67 | echo "@ IN A ${MASTER_SERVER_IP}" >> ${BIND_DIR}${MASTER_DIR}/$line |
||
68 | echo "" >> ${BIND_DIR}${MASTER_DIR}/$line |
||
69 | echo "; host_records" >> ${BIND_DIR}${MASTER_DIR}/$line |
||
70 | echo "localhost IN A 127.0.0.1" >> ${BIND_DIR}${MASTER_DIR}/$line |
||
71 | echo "${HOSTNAME} IN A ${MASTER_SERVER_IP}" >> ${BIND_DIR}${MASTER_DIR}/$line |
||
72 | if [ ${MX} ]; then |
||
73 | echo "${MX} IN A ${MASTER_SERVER_IP}" >> ${BIND_DIR}${MASTER_DIR}/$line |
||
74 | fi |
||
75 | for cname in ${CNAMES} |
||
76 | do |
||
77 | echo "${cname} IN CNAME ${HOSTNAME}" >> ${BIND_DIR}${MASTER_DIR}/$line |
||
78 | done |
||
79 | done < ${FILE} |
||
80 | |||
81 | elif [ "${1}" = "slave" ]; then |
||
82 | |||
83 | while read line |
||
84 | do |
||
85 | echo "zone \"$line\" IN { type slave; masters{ ${MASTER_SERVER_IP}; }; file \"${SLAVE_DIR}/$line\"; };" >> ${SLAVE_CONF_FILE} |
||
86 | done < ${FILE} |
||
87 | |||
88 | else |
||
89 | |||
90 | echo "Usage ./bind_zone_config.sh type zone_list_file" |
||
91 | echo "Type can be master | slave" |
||
92 | exit 0 |
||
93 | fi |