Scripts/dynpowerup: Difference between revisions
From fakedWiki
(added update of SOA record to initiate axfr) |
No edit summary |
||
| Line 24: | Line 24: | ||
if [ "$IP" != "$OLD_IP" ]; then | if [ "$IP" != "$OLD_IP" ]; then | ||
echo "IP address changed from $OLD_IP to $IP" | echo "IP address changed from $OLD_IP to $IP" | logger -t DynPowerUp | ||
for RECORD in ${RECORDS[@]}; do | for RECORD in ${RECORDS[@]}; do | ||
echo "updating record: $RECORD" | echo "updating record: $RECORD" | logger -t DynPowerUp | ||
COMMAND="$COMMAND UPDATE ${DBNAME}.records SET content = \"$IP\" WHERE name = \"$RECORD\" AND type = 'A';" | COMMAND="$COMMAND UPDATE ${DBNAME}.records SET content = \"$IP\" WHERE name = \"$RECORD\" AND type = 'A';" | ||
COMMAND="$COMMAND UPDATE ${DBNAME}.records SET content = \"$SOA\" WHERE name = \"$RECORD\" AND type = 'SOA';" | COMMAND="$COMMAND UPDATE ${DBNAME}.records SET content = \"$SOA\" WHERE name = \"$RECORD\" AND type = 'SOA';" | ||
| Line 32: | Line 32: | ||
mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e "$COMMAND" | mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e "$COMMAND" | ||
echo "$IP" > /tmp/nsup.IP | echo "$IP" > /tmp/nsup.IP | ||
echo "IP updates done" | echo "IP updates done" | logger -t DynPowerUp | ||
fi | fi | ||
</pre> | </pre> | ||
Revision as of 19:33, 17 February 2011
This script will update the A records for zones you host on your local PowerDNS nameserver to your (external) dynamic IP.
I'm running this script after every reconnect of my VDSL link through ppp's ip-up scripts by putting it here:
/etc/ppp/ip-up.d/dynpowerup
#!/bin/bash
RECORDS=("example.com" "ns1.example.com" "ns2.example.com" "example.org" "example.net")
SOA="ns1.example.com. hostmaster.example.com. `date +%Y%m%d%H` 10800 3600 604800 3600"
DBUSER="your-powerdns-user"
DBPASS="your-powerdns-password"
DBNAME="your-powerdns-database"
IP=`lynx -dump http://checkip.dyndns.org | awk '{print $4}'`
if [ -e "/tmp/nsup.IP" ]; then
read OLD_IP < "/tmp/nsup.IP"
else
OLD_IP="0.0.0.0"
fi
if [ "$IP" != "$OLD_IP" ]; then
echo "IP address changed from $OLD_IP to $IP" | logger -t DynPowerUp
for RECORD in ${RECORDS[@]}; do
echo "updating record: $RECORD" | logger -t DynPowerUp
COMMAND="$COMMAND UPDATE ${DBNAME}.records SET content = \"$IP\" WHERE name = \"$RECORD\" AND type = 'A';"
COMMAND="$COMMAND UPDATE ${DBNAME}.records SET content = \"$SOA\" WHERE name = \"$RECORD\" AND type = 'SOA';"
done
mysql -u${DBUSER} -p${DBPASS} ${DBNAME} -e "$COMMAND"
echo "$IP" > /tmp/nsup.IP
echo "IP updates done" | logger -t DynPowerUp
fi