概要
DNSレコードの存在を確認するには、DnsClient.NETというライブラリを使用する。
ここでは、調べたい対象のDNSのリストが記述されたファイルを順番に読み込み、存在しない場合は別ファイルに書き込む処理を行う。
サンプルコード
サンプルコードでは、LookupClientのQueryメソッドにて、対象のドメインとレコードの種類(AおよびNS)を指定して、
結果が0件なら存在しないと判断する。
MXレコードを対象としているが、QueryType(Enum)でレコードの種類(AおよびNS)が定義されているので、
様々な種類のレコードを対象に調べることができる。
using System;
using System.IO;
using DnsClient; // DnsClientを参照に追加
namespace DNSRecordCheck
{
class Program
{
static async void Main(string[] args)
{
// LookupClientクラスのインスタンスを生成
var lookupClient = new LookupClient();
using (var sreader = new StreamReader(@"C:\domains.txt"))
{
while (!sreader.EndOfStream)
{
// 調査対象のリストから1行ずつ読み込み
var line = await sreader.ReadLineAsync();
using (var swriter = File.AppendText(@"C:\ignores.txt"))
{
// 読み込んだDNSを問い合わせる(QueryType.MX : MXレコードを対象とする)
var result = lookupClient.Query(line, QueryType.MX);
if (result.Answers.Count == 0)
{ // 結果が0件の場合は存在しないと判断
// 別ファイル(ignores.txt)に書き込む
swriter.WriteLine(line);
}
}
}
}
}
}
}