source: trunk/server/source4/scripting/devel/rebuild_zone.sh

Last change on this file was 745, checked in by Silvan Scherrer, 13 years ago

Samba Server: updated trunk to 3.6.0

File size: 3.1 KB
Line 
1#!/bin/sh
2# rebuild a zone file, adding all DCs
3
4[ $# -eq 2 ] || {
5 echo "rebuild_zone.sh <sam.ldb> <zonefile>"
6 exit 1
7}
8
9LDB="$1"
10ZFILE="$2"
11
12dnshostname=$(bin/ldbsearch -H $LDB -s base -b '' dnsHostname | grep ^dns | cut -d' ' -f2)
13host=$(echo $dnshostname | cut -d. -f1)
14realm=$(echo $dnshostname | cut -d. -f2-)
15GUIDs=$(bin/ldbsearch -H $LDB objectclass=ntdsdsa objectguid --cross-ncs|grep ^objectGUID| cut -d' ' -f2)
16DOMAINGUID=$(bin/ldbsearch -H $LDB -s base objectguid |grep ^objectGUID| cut -d' ' -f2)
17
18dcname() {
19 GUID=$1
20 echo $(bin/ldbsearch -H $LDB objectguid=$GUID dn --cross-ncs|grep CN=NTDS.Settings| cut -d, -f2| cut -d= -f2)
21}
22
23getip() {
24 NAME=$1
25 ret=$(nmblookup $NAME| egrep '^[0-9]' | head -1 | cut -d' ' -f1)
26 test -n "$ret" || {
27 echo "Unable to find IP for $NAME. Using XX.XX.XX.XX. Please edit" 1>&2
28 echo "XX.XX.XX.XX"
29 }
30 echo $ret
31}
32
33echo "Generating header for host $host in realm $realm"
34cat <<EOF > $ZFILE
35; -*- zone -*-
36; generated by rebuild_zone.sh
37\$ORIGIN $realm.
38\$TTL 1W
39@ IN SOA @ hostmaster (
40 $(date +%Y%m%d%H) ; serial
41 2D ; refresh
42 4H ; retry
43 6W ; expiry
44 1W ) ; minimum
45 IN NS $host
46
47EOF
48
49for GUID in $GUIDs; do
50 dc=$(dcname $GUID)
51 echo "Generating IP for DC $dc"
52 ip=$(getip $dc)
53 test -n "$ip" || exit 1
54 echo " IN A $ip" >> $ZFILE
55done
56
57echo "; IP Addresses" >> $ZFILE
58for GUID in $GUIDs; do
59 dc=$(dcname $GUID)
60 ip=$(getip $dc)
61 test -n "$ip" || exit 1
62 echo "$dc IN A $ip" >> $ZFILE
63done
64
65for GUID in $GUIDs; do
66 dc=$(dcname $GUID)
67 ip=$(getip $dc)
68 test -n "$ip" || exit 1
69 echo "Generating zone body for DC $dc with IP $ip"
70cat <<EOF >> $ZFILE
71;
72; Entries for $dc
73gc._msdcs IN A $ip
74$GUID._msdcs IN CNAME $dc
75_gc._tcp IN SRV 0 100 3268 $dc
76_gc._tcp.Default-First-Site-Name._sites IN SRV 0 100 3268 $dc
77_ldap._tcp.gc._msdcs IN SRV 0 100 389 $dc
78_ldap._tcp.Default-First-Site-Name._sites.gc._msdcs IN SRV 0 100 389 $dc
79_ldap._tcp IN SRV 0 100 389 $dc
80_ldap._tcp.dc._msdcs IN SRV 0 100 389 $dc
81_ldap._tcp.pdc._msdcs IN SRV 0 100 389 $dc
82_ldap._tcp.$DOMAINGUID.domains._msdcs IN SRV 0 100 389 $dc
83_ldap._tcp.Default-First-Site-Name._sites IN SRV 0 100 389 $dc
84_ldap._tcp.Default-First-Site-Name._sites.dc._msdcs IN SRV 0 100 389 $dc
85_kerberos._tcp IN SRV 0 100 88 $dc
86_kerberos._tcp.dc._msdcs IN SRV 0 100 88 $dc
87_kerberos._tcp.Default-First-Site-Name._sites IN SRV 0 100 88 $dc
88_kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs IN SRV 0 100 88 $dc
89_kerberos._udp IN SRV 0 100 88 $dc
90_kerberos-master._tcp IN SRV 0 100 88 $dc
91_kerberos-master._udp IN SRV 0 100 88 $dc
92_kpasswd._tcp IN SRV 0 100 464 $dc
93_kpasswd._udp IN SRV 0 100 464 $dc
94EOF
95done
96
97cat <<EOF >> $ZFILE
98
99; kerberos hack
100_kerberos IN TXT $(echo $realm | tr [a-z] [A-Z])
101EOF
102
103echo "Rebuilt zone file $ZFILE OK"
104
105echo "Reloading bind config"
106PATH="/usr/sbin:$PATH" rndc reload
107exit 0
Note: See TracBrowser for help on using the repository browser.