运维自动化当前运维必备的一个技能. 学了C#最好在实践中不断去强化技能和寻找问题; 网站系列暂停一次, 今天出个题目是 如何用C#批量自动化测试DNS名称解析:
比如企业内部搭建了一个DNS架构, 有多层次节点和转发配置, 需要嗅探出当中超时/架构等问题, 你怎么用C#来做一个批量化DNS名称解析测试工具? 再看代码前可以自己想想;
1. 本代码实现了简单的C/A记录查询, SRV记录的查询没有包含在内;
2. 本代码初步做了1000次名称解析测试, 你可以将 NametoResolve 改为自己想测试的名称;
3. 本代码对于测试的返回没有做自动处理, 等测试批次多了<5000+>, 如果需要自动记录/统计名称解析失败次数和结果,可以怎么做呢?
4. 如果测试的名称其实无法解析, 本代码程序行为会怎么样呢? 欢迎大家测试并提供建议优化;
using System;
using System.Net;
class DNSTest
{
static void Main()
{
// Do a few lookups by host name and address
DNSLookup("msdn.microsoft.com");
int i = 0;
for (; ; )
{
DNSLookup("NametoResolve");
System.Threading.Thread.Sleep(500);
if (i == 1000)
{ break; }
i++;
}
// Keep the console window open in debug mode
Console.WriteLine("Press any key to exit.");
Console.ReadKey();
}
protected static void DNSLookup(string hostNameOrAddress)
{
//Console.WriteLine("Lookup: {0}\n", hostNameOrAddress);
IPHostEntry hostEntry = Dns.GetHostEntry(hostNameOrAddress);
Console.WriteLine(" Host Name: {0}", hostEntry.HostName);
IPAddress[] ips = hostEntry.AddressList;
foreach (IPAddress ip in ips)
{
Console.WriteLine(" Address: {0}", ip);
}
Console.WriteLine();
}
}