注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

曾国藩的博客

 
 
 

日志

 
 

批量添加DNS的A记录和PTR记录  

2012-08-31 13:44:25|  分类: WindowsServer200 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
http://www.cnblogs.com/killkill/archive/2009/05/13/1455850.html

搞SQL Server集群难免要搞域控制器,搞域控制器就不得不提DNS服务器,但DNS不只是为域服务,还可以作为ESX服务器所需的DNS服务器来复用,于是涉及到如何批量添加DNS的记录了(包括A记录和PTR记录)。

在 Google上面搜索的话,估计最容易搜索到的是如何使用 dnscmd.exe 这个工具来添加A记录,这个工具位于Windows 安装光盘的 SUPPORT\TOOLS\SUPPORT.CAB 中,用WinRAR可以打开,只需要Copy 一个文件出来就可以用了,命令很简单:

dnscmd [DNS] /RecordAdd [域] [主机名] A [IP] dnscmd . /RecordAdd myhome.com hostA A 172.16.2.1 dnscmd . /RecordAdd myhome.com hostB A 172.16.2.2 dnscmd . /RecordAdd myhome.com hostC A 172.16.2.3 dnscmd . /RecordAdd myhome.com hostD A 172.16.2.4

到此为止,感觉上还是比较简单的,找个“工具”(C#、Perl、JS)生成一下这些命令就可以了。

但是添加完A记录后,PTR记录如何添加呢,这个也可以dnscmd工具做,这里我就不写了,本文重点不在这里。

有没有一种解决方案可以做到:A记录和PTR记录一起添加呢,答案是肯定的。

以下是一段在Google中搜索到的脚本,用于同时添加A记录和PTR记录的工具,出处无从查起了。

::  addaptr.bat :: ::  Purpose:         Add an A and PTR record using dnscmd.exe :: ::  Usage:           addaptr dnsserver fqdn ipadd :: ::                     dnsserver  DNS server's ip, hostname or "." if the ::                                DNS service is running on local machine ::                     fqdn       FQDN of the host you want the records ::                                to be added for (hostname.mydomain.com) ::                     ipadd      ip address of the host :: __________________________________________________________________ :: @Echo Off SetLocal  Set dnsserver=%1 Set fqdn=%2 Set ipadd=%3  If Not Defined ipadd (   Echo Add an A and PTR record using dnscmd.exe   Echo.   Echo %~n0 dnsserver fqdn ipadd   Echo.   Echo   dnsserver  DNS server's ip address, hostname, or "." if the DNS   Echo              service is running on local machine.   Echo   fqdn       FQDN of the host you want the records to be added for   Echo              ^(hostname.mydomain.com^)   Echo   ipadd      ip address of the host   Goto End )  For /F "Tokens=1,* Delims=." %%A In ("%fqdn%") Do (   Set hostname=%%A   Set fzone=%%B ) For /F "Tokens=1-4 Delims=." %%A In ("%ipadd%") Do (   Set rzone=%%C.%%B.%%A.in-addr.arpa   Set okt4=%%D )  :: Exists reverse lookupzone? DnsCmd %dnsserver% /ZoneInfo %rzone% >%TEMP%.\%~n0.log 2>&1 || (Goto Err)  :: Add PTR record DnsCmd %dnsserver% /RecordAdd %rzone% %okt4% PTR %fqdn% >%TEMP%.\%~n0.log 2>&1 || (Goto Err)  :: Exists forward lookupzone? DnsCmd %dnsserver% /ZoneInfo %fzone% >%TEMP%.\%~n0.log 2>&1 || (Goto Err)  :: Add A record DnsCmd %dnsserver% /RecordAdd %fzone% %hostname% A %ipadd% >%TEMP%.\%~n0.log 2>&1 || (Goto Err)  Echo Done. Goto End  :Err Type %TEMP%.\%~n0.log Pause  :End If Exist %TEMP%.\%~n0.log Del %TEMP%.\%~n0.log EndLocal

将这段脚本另存为 addaptr.bat 和 dnscmd.exe 放在同一个目录,这个命令的使用方法也很简单:

addaptr.bat [DNS] [主机名+域名] [IP] addaptr.bat . Host096.myhome.com 172.16.2.96 addaptr.bat . Host097.myhome.com 172.16.2.97 addaptr.bat . Host098.myhome.com 172.16.2.98 addaptr.bat . Host099.myhome.com 172.16.2.99

下一步就很简单了,找个“工具”(C#、Perl、JS)生成一下脚本就行了,下面是我用于批量生成的一段Perl脚本,将整个C段加入DNS:

#! /usr/bin/perl  $i=1; for($i=1 ; $i<= 9 ; $i++) {  print "addaptr.bat  .  Host00$i.myhome.com  172.16.2.$i"."\n"; } for($i=10 ; $i<= 99; $i++) {  print "addaptr.bat  .  Host0$i.myhome.com  172.16.2.$i"."\n"; } for($i=100 ; $i <= 254 ; $i++) {  print "addaptr.bat  .  Host$i.myhome.com  172.16.2.$i"."\n"; }
  评论这张
 
阅读(860)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018