como atualizar registros usando o nsupdate?

3

Sabemos que podemos atualizar um registro (seu IP) seguindo estas etapas:

nsupdate
server ns.bar44.com
zone bar44.com
update delete somehost.bar44.com. A
update add somehost.bar44.com. 86400 A 10.10.10.1
show
send
  1. Como podemos ver, sabemos que o somehost.bar44.com. existe no banco de dados, isso funcionará se eu quiser atualizar o IP de um registro existente, mas e se eu quiser mudar o nome do host não o IP. Por exemplo, quero fazer o 10.10.10.1 o IP de somehost22.bar44.com. o que me avisará que o IP já está sendo usado pelo somehost.bar44.com.?

  2. Esta é uma maneira de excluir o banco de dados inteiro de uma determinada zona usando nsupdate?

por Networker 25.05.2014 / 11:57

1 resposta

3

ISENÇÃO DE RESPONSABILIDADE : use este script por sua conta e risco

O que isso faz?

Como o O / P deseja dizer que deseja adicionar somedomain.bar44.com e o somedomain44.bar44.com existe na zona, ele deve remover somedomain44.bar44.com e deve adicionar somedomain.bar44.com na zona. esse processo será feito usando esse script. Testado no Ubuntu bind9.

em suma, ele adicionará xyz.bar.com se não existir e, se existir, removerá ( xyz*.bar.com ) as novas informações fornecidas por você.

Script:

#!/bin/bash
#
## Update DNS Records Interactive
## Rahul Patil <http://www.linuxian.com>

#
## Functions
#

ask() {

    while [[ $ans == "" ]]
    do
        read -p "${@}"  ans
    done

    echo $ans
}

forward_zone_update() { 
    local rr=${@}
    echo "
    server $DNS_SERVER
    zone $DNS_ZONE
    update add $rr
    show
    send" | nsupdate
}

delete_record() { 
    local rr=${@}
    echo "
    server $DNS_SERVER
    zone $DNS_ZONE
    update delete $rr
    show
    send" | nsupdate
}


#
## Global Variable
#
DNS_IP="127.0.0.1"
DNS_SERVER="ns1.rahul.local"
DNS_ZONE="rahul.local"
DIG_CMD='dig +noquestion +nocmd +nostat +nocomments'

update_rr_a=$( ask "Enter FQDN of Record (Ex. xyz.${DNS_ZONE}) :-")
update_rr=$( ask "Enter IP of Record :-")
found_rr=$($DIG_CMD @${DNS_IP} AXFR ${DNS_ZONE} | grep  ^"${update_rr_a%.$DNS_ZONE}" | tee /tmp/rr.tmp )

echo "Checking ${update_rr_a}..."

if [[ -z "${found_rr}" ]] 
then
    echo "${update_rr_a} does exists"
    echo "${update_rr_a} adding to ${DNS_ZONE}"
    forward_zone_update "${update_rr_a} 86400 IN A ${update_rr}"
    echo "Done!!"
else
    echo "${update_rr_a} already exists"
    ans=$(ask "Do you want to Delete RR and want to re-add(y/n?)")
    case $ans in
        [yY]|[yY][eE][sS]) while read r; 
                   do delete_record $r ; 
                               done < /tmp/rr.tmp ;;

        [nN]|[nN][oO])     exit 1 ;;
    esac
    forward_zone_update "${update_rr_a} 86400 IN A ${update_rr}"
    echo "Done!!"
fi
    
por 25.05.2014 / 15:14

Tags