From 68e246948776c9bca12913cd3cf648fc783191f9 Mon Sep 17 00:00:00 2001 From: Stefan Huber Date: Thu, 7 Nov 2013 21:56:29 +0100 Subject: [PATCH] nsd: add nsd-incrserial --- nsd/nsd-dynipwatch | 16 ++------- nsd/nsd-incrserial | 89 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+), 13 deletions(-) create mode 100755 nsd/nsd-incrserial diff --git a/nsd/nsd-dynipwatch b/nsd/nsd-dynipwatch index 4a650b0..068702b 100755 --- a/nsd/nsd-dynipwatch +++ b/nsd/nsd-dynipwatch @@ -36,15 +36,6 @@ function setAddrInZonefile # sed -i -e "s_^\\($1\\s.*A\\s.*\\s\\)\\([0-9]\\+\\.\\)\\+[0-9]\\+_\\1$3_g" "$2" } -function getSerialFromZonefile # -{ - awk '/; serial/{print$1}' "$1" -} - -function setSerialInZonefile # -{ - sed -i -e "s_^\\(.*\\s\\)[0-9]\+\\(\\s\\+; serial.*\\)_\\1$2\\2_g" "$1" -} function run() { @@ -64,11 +55,10 @@ function run() fi if ! [ "${oldip}" = "${newip}" ]; then - serial=`getSerialFromZonefile "${zonefile}"` - serial=$(( $serial + 1)) - echo " Update IP address. New serial ${serial}." + echo " Update IP address. Increment serial." setAddrInZonefile "${host}" "${zonefile}" "${newip}" - setSerialInZonefile "${zonefile}" "${serial}" + nsd-incrserial "${zonefile}" + /etc/nsd3/signzone.sh sthu.org nsdc rebuild && nsdc reload && nsdc notify fi diff --git a/nsd/nsd-incrserial b/nsd/nsd-incrserial new file mode 100755 index 0000000..57028bb --- /dev/null +++ b/nsd/nsd-incrserial @@ -0,0 +1,89 @@ +#!/bin/sh + +# Copyright (c) 2013 Stefan Huber +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall be +# included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. + +set -e + +PROGNAME=$(basename $0) + +usage() { + cat < +{ + awk '/; serial/{print$1}' "$1" +} + +setSerialInZonefile() # +{ + sed -i -e "s_^\\(.*\\s\\)[0-9]\+\\(\\s\\+; serial.*\\)_\\1$2\\2_g" "$1" +} + + +serial=`getSerialFromZonefile "${zonefile}"` +serial=$(( $serial + 1)) + +if [ -z "$serial" ]; then + echo "Internal error, serial is empty." + exit 1 +fi + +setSerialInZonefile "${zonefile}" "${serial}" + -- 2.39.5