自动给dns 添加serial 数字的脚本
2019-10-16 本文已影响0人
bjmingyang
#!/bin/bash
ZONES_PATH="/var/named/master/"
DATE=`date +%Y%m%d`
echo "+++++++data++++"
echo $DATE
NEEDLE="Serial"
status=`cat status`
status_time=`echo $status|cut -c 1-8`
status_snumber=`echo $status|cut -c 9-10`
for ZONE in $(ls -1 $ZONES_PATH) ; do
#ZONE=mb.tripadvisor.com.hosts
curr1=$(/bin/grep -i -e "${NEEDLE}$" $ZONES_PATH/${ZONE} | /bin/sed -n "s/^\s*\([0-9]*\)\s*;\s*${NEEDLE}\s*/\1/p")
# replace if current date is shorter (possibly using different format)
curr=`echo $curr1|cut -c 1-8`
echo "**8 curr**"
echo $curr
if [[ $curr -lt $DATE ]] ; then
echo "**status**"
echo $status
if [ [ $status_time -lt $DATE ]] ; then
serial="${DATE}00"
echo $serial > status
echo "status_time $status_time -lt DATE $DATE"
echo $serial
else
echo "$status_time gt or ne date $DATE"
serial=`expr $status + 1 `
echo $serial
echo $serial > status
fi
else
echo curr "$curr gt or ne DATE $DATE"
if [[ $curr1 -gt $status ]] ; then
echo "curr serial number $curr1 gt status file number $status and gt curr date force use curr date"
serial="${DATE}00"
echo $serial > status
echo $serial
else
echo "curr serial number $curr1 lt or ne status file number $status"
serial=`expr $status + 1`
echo $serial
echo $serial > status
fi
fi
/bin/sed -i -e "s/^\(\s*\)[0-9]\{0,\}\(\s*;\s*${NEEDLE}\)$/\1${serial}\2/" ${ZONES_PATH}/${ZONE}
echo "${ZONE}: "
grep "; ${NEEDLE}$" $ZONES_PATH/${ZONE}
done