次の手順を実行してレコード(対応するIP)を更新できることを知っています。
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
ご覧のとおり、somehost.bar44.comを知っています。データベースに存在する場合は、既存のレコードのIPを更新したい場合は機能しますが、IPの代わりにホスト名を変更するにはどうすればよいですか?たとえば、somehost22.bar44.comのIPに10.10.10.1を設定したいとします。 somehost.bar44.comがIPを使用していることをどうやって知ることができますか?
nsupdateを使用して地域のデータベース全体を削除する方法はありますか?
答え1
婦人声明:このスクリプトを使用する責任はユーザー自身にあります。
それは何ができますか?
O / Pが必要に応じて追加を希望し、somedomain.bar44.com
すでにゾーンに存在するとsomedomain44.bar44.com
仮定した場合は、まず削除してからゾーンに再追加する必要があります。以下のスクリプトがまさにそのことをします。 BIND9を使用してUbuntuでテストされました。somedomain44.bar44.com
somedomain.bar44.com
つまり、xyz.bar.com
まだ存在しない場合は追加し、存在する場合は最初に削除(xyz*.bar.com
)してから、ユーザーが提供した新しい情報として再度追加します。
スクリプト:
#!/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