Axfr to Git
The problem: you want to keep a historical reference of zone changes. This little script helps you do that, it:
- AXFRs the zone you want;
- Cleans the zone a bit, sorts it and feeds it through
named-compilezone
to make it look “nice”; - Puts it in a git repository;
- Checks it in with a date tag (
date -u '+%Y-%m-%d_%H%M%S'
).
You do need to define the directory where the git repository
is located in the script ($gitdir
).
Axfr2git:
#!/bin/bash
# Define gitdir and check if git is initialized.
gitdir=/tmp/stats
if [ ! -d $gitdir ]; then
mkdir -p $gitdir
fi
if [ ! -e $gitdir/.git ]; then
( cd $gitdir; git init )
fi
# 2 args: @nameserver zonename
ns=$1
zone=$2
shift 2
if [ -z "$ns" ]; then
echo Synopsis: $0 @nameserver zonename
exit 1
fi
if [ -z "$zone" ]; then
echo Synopsis: $0 @nameserver zonename
exit 1
fi
# perform the dig
dig +norec AXFR "$ns" "$zone" | grep -v '^;' | sort | \
named-compilezone -s relative -i none -o $gitdir/$zone-zone $zone /dev/stdin
if [ $? -ne 0 ]; then
echo 0: Failure to AXFR $zone from $ns >&2
exit 1
fi
( cd $gitdir
git add $zone-zone
git commit -a -m"$zone zone of $(date -u)" >/dev/null
git tag "$(date -u '+%Y-%m-%d_%H%M%S')" )
Read other posts