# rebuild a zone file, adding all DCs
[ $# -eq 2 ] || {
- echo "rebuild_zone.sh <sam.ldb> <zonefile>"
- exit 1
+ echo "rebuild_zone.sh <sam.ldb> <zonefile>"
+ exit 1
}
LDB="$1"
dnshostname=$(bin/ldbsearch -H $LDB --scope=base -b '' dnsHostname | grep ^dns | cut -d' ' -f2)
host=$(echo $dnshostname | cut -d. -f1)
realm=$(echo $dnshostname | cut -d. -f2-)
-GUIDs=$(bin/ldbsearch -H $LDB objectclass=ntdsdsa objectguid --cross-ncs|grep ^objectGUID| cut -d' ' -f2)
-DOMAINGUID=$(bin/ldbsearch -H $LDB --scope=base objectguid |grep ^objectGUID| cut -d' ' -f2)
+GUIDs=$(bin/ldbsearch -H $LDB objectclass=ntdsdsa objectguid --cross-ncs | grep ^objectGUID | cut -d' ' -f2)
+DOMAINGUID=$(bin/ldbsearch -H $LDB --scope=base objectguid | grep ^objectGUID | cut -d' ' -f2)
-dcname() {
- GUID=$1
- echo $(bin/ldbsearch -H $LDB objectguid=$GUID dn --cross-ncs|grep CN=NTDS.Settings| cut -d, -f2| cut -d= -f2)
+dcname()
+{
+ GUID=$1
+ echo $(bin/ldbsearch -H $LDB objectguid=$GUID dn --cross-ncs | grep CN=NTDS.Settings | cut -d, -f2 | cut -d= -f2)
}
-getip() {
- NAME=$1
- ret=$(nmblookup $NAME| egrep '^[0-9]' | head -1 | cut -d' ' -f1)
- test -n "$ret" || {
- echo "Unable to find IP for $NAME. Using XX.XX.XX.XX. Please edit" 1>&2
- echo "XX.XX.XX.XX"
- }
- echo $ret
+getip()
+{
+ NAME=$1
+ ret=$(nmblookup $NAME | egrep '^[0-9]' | head -1 | cut -d' ' -f1)
+ test -n "$ret" || {
+ echo "Unable to find IP for $NAME. Using XX.XX.XX.XX. Please edit" 1>&2
+ echo "XX.XX.XX.XX"
+ }
+ echo $ret
}
echo "Generating header for host $host in realm $realm"
-cat <<EOF > $ZFILE
+cat <<EOF >$ZFILE
; -*- zone -*-
; generated by rebuild_zone.sh
\$ORIGIN $realm.
EOF
for GUID in $GUIDs; do
- dc=$(dcname $GUID)
- echo "Generating IP for DC $dc"
- ip=$(getip $dc)
- test -n "$ip" || exit 1
- echo " IN A $ip" >> $ZFILE
+ dc=$(dcname $GUID)
+ echo "Generating IP for DC $dc"
+ ip=$(getip $dc)
+ test -n "$ip" || exit 1
+ echo " IN A $ip" >>$ZFILE
done
-echo "; IP Addresses" >> $ZFILE
+echo "; IP Addresses" >>$ZFILE
for GUID in $GUIDs; do
- dc=$(dcname $GUID)
- ip=$(getip $dc)
- test -n "$ip" || exit 1
- echo "$dc IN A $ip" >> $ZFILE
+ dc=$(dcname $GUID)
+ ip=$(getip $dc)
+ test -n "$ip" || exit 1
+ echo "$dc IN A $ip" >>$ZFILE
done
for GUID in $GUIDs; do
- dc=$(dcname $GUID)
- ip=$(getip $dc)
- test -n "$ip" || exit 1
- echo "Generating zone body for DC $dc with IP $ip"
-cat <<EOF >> $ZFILE
+ dc=$(dcname $GUID)
+ ip=$(getip $dc)
+ test -n "$ip" || exit 1
+ echo "Generating zone body for DC $dc with IP $ip"
+ cat <<EOF >>$ZFILE
;
; Entries for $dc
gc._msdcs IN A $ip
EOF
done
-cat <<EOF >> $ZFILE
+cat <<EOF >>$ZFILE
; kerberos hack
_kerberos IN TXT $(echo $realm | tr [a-z] [A-Z])