![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 13:39 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 请教nslookup -q=mx 163.com如何只得到邮箱服务器的地址 |
| 可打印版本 1,166 / 4 |
| 第1楼 qwedsa500 | 发表于 2010-03-22 02:57 |
| 新手上路 发帖 2 积分 2 | |
|
请教nslookup -q=mx 163.com如何只得到邮箱服务器的地址 各位大侠好,小弟刚发现这个论坛,感觉水很深,要学的东西太多了。
小弟想实现一个功能,就是用一条命令,实现根据E-Mail地址得到邮件服务器IP的功能。举个例子,待查邮箱是abc@163.com 小弟现在是分步做的,具体步骤是: 1.取出163.com。 2.执行nslookup -q=mx 163.com得到 Server: localhost Address: 192.168.0.1 Non-authoritative answer: 163.com MX preference = 10, mail exchanger = mxnew-c.163.com 163.com MX preference = 10, mail exchanger = mxnew-d.163.com 163.com MX preference = 10, mail exchanger = mxnew-a.163.com 163.com MX preference = 10, mail exchanger = mxnew-b.163.com 3.取出mxnew-a.163.com 4.执行nslookup mxnew-a.163.com得到 Server: localhost Address: 192.168.0.1 Non-authoritative answer: Name: mxnew-a.163.com Addresses: 220.181.12.58, 220.181.12.86, 220.181.12.52, 220.181.12.53 220.181.12.55, 220.181.12.56, 220.181.12.57 5.取出任意一个IP地址 我知道不一定能结合到一句里面,但是还是想请教各位老大。 小弟现在做的是把步骤2、3整合到一句中,用的命令是 C:\>for /f "skip=1 tokens=2 delims= " %a in ('echo exit^|nslookup -q=mx 163.com') do @echo %a 但是这句执行的时候,总是出现如下错误 *** Can't find server name for address 220.181.31.8: No response from server *** UnKnown can't find mx: No response from server 220.181.31.8 我是看了http://www.cn-dos.net/forum/viewthread.php?tid=50405&sid=RVd000这个帖子lifeisn老大的回复才有的这个想法,不知哪里错了,还请高手不吝赐教,小弟跪谢~~~~ [ Last edited by qwedsa500 on 2010-3-22 at 02:59 ] |
|
| 第2楼 Hanyeguxing | 发表于 2010-03-22 15:04 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
|
运行:nslookup -q=mx 163.com得到返回信息: Server: cache.ctnt.com.cn Address: 219.150.32.132 Non-authoritative answer: 163.com MX preference = 10, mail exchanger = mxnew-c.163.com 163.com MX preference = 10, mail exchanger = mxnew-d.163.com 163.com MX preference = 10, mail exchanger = mxnew-a.163.com 163.com MX preference = 10, mail exchanger = mxnew-b.163.com 163.com nameserver = ns4.nease.net 163.com nameserver = ns3.nease.net mxnew-c.163.com internet address = 220.181.12.59 mxnew-c.163.com internet address = 220.181.12.60 mxnew-c.163.com internet address = 220.181.12.61 mxnew-c.163.com internet address = 220.181.12.62 mxnew-c.163.com internet address = 220.181.12.63 mxnew-c.163.com internet address = 220.181.12.64 mxnew-c.163.com internet address = 220.181.12.65 mxnew-c.163.com internet address = 220.181.12.66 mxnew-c.163.com internet address = 220.181.12.67 mxnew-c.163.com internet address = 220.181.12.68 mxnew-c.163.com internet address = 220.181.12.69 mxnew-c.163.com internet address = 220.181.12.51 然后根据文件进行for /f解析 2>nul是用来屏蔽Non-authoritative answer:的 以上信息都是命令在xp sp3下运行后返回的 如果想得到任意一个地址,可以: 在这里,用&&或&都可以,推荐用&&。 管道 | 在这里起扩展%b%延迟的作用 [ Last edited by Hanyeguxing on 2010-3-23 at 16:37 ] |
|
| 第3楼 qwedsa500 | 发表于 2010-03-22 23:47 |
| 新手上路 发帖 2 积分 2 | |
|
首先非常感谢Hanyeguxing老大,指路明灯啊~~~
在老大的孜孜教诲下,小弟把您的命令改成如下格式: nslookup -q=mx 163.com>t.h 2>nul&&(for /f "tokens=7,9" %a in (t.h) do @if "%a"=="exchanger" set b=%b)&del t.h|echo %b% 这样就可以取出mx服务器的域名了,不知怎么的,这里执行nslookup -q=mx 163.com和您那里面不太一样,我这里显示的是: Server: localhost Address: 192.168.0.1 Non-authoritative answer: 163.com MX preference = 10, mail exchanger = mxnew-b.163.com 163.com MX preference = 10, mail exchanger = mxnew-c.163.com 163.com MX preference = 10, mail exchanger = mxnew-d.163.com 163.com MX preference = 10, mail exchanger = mxnew-a.163.com 只有上面这几行,没有具体解析出IP地址…… 当我使用下面这条命令的时候 nslookup -q=mx 163.com>t.h 2>nul&&(for /f "tokens=7,9" %a in (t.h) do @echo %b)&del t.h 可以把4个mx服务器的域名全取出来,结果是: mxnew-a.163.com mxnew-b.163.com mxnew-c.163.com mxnew-d.163.com 我还想问一下,如果我想把这四条记录都存到文件中应该怎么改写上面的语句啊? 我试过两种方法: 1、nslookup -q=mx 163.com>t.h 2>nul&&(for /f "tokens=7,9" %a in (t.h) do @if "%a"=="exchanger" set b=%b)&del t.h|echo %b% 结果:屏幕显示一条记录如下: mxnew-a.163.com 当我改写成nslookup -q=mx 163.com>t.h 2>nul&&(for /f "tokens=7,9" %a in (t.h) do @if "%a"=="exchanger" set b=%b)&del t.h|echo %b% >w.h时,文件中也只有这一条记录。 2、nslookup -q=mx 163.com>t.h 2>nul&&(for /f "tokens=7,9" %a in (t.h) do @echo %b)&del t.h 结果:屏幕显示四条记录如下: mxnew-a.163.com mxnew-b.163.com mxnew-c.163.com mxnew-d.163.com 当我改写成nslookup -q=mx 163.com>t.h 2>nul&&(for /f "tokens=7,9" %a in (t.h) do @echo %b>w.h)&del t.h时,文件中也只有一条记录。 如何才能把四条记录都保存下来呢? |
|
| 第4楼 luuk | 发表于 2010-03-23 09:57 |
| 初级用户 发帖 46 积分 69 来自 山东 | |
|
nslookup -q=mx 163.com 详细解释一下是什么意思。。nslookup用法是怎样啊,用来干哈的?
|
|
| 第5楼 Hanyeguxing | 发表于 2010-03-23 16:09 |
| 银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂 | |
Originally posted by luuk at 2010-3-23 09:57: 用来解析163.com邮件交换器的ip地址 Originally posted by qwedsa500 at 2010-3-22 23:47: 你把 nslookup -q=mx 163.com>t.h 2>nul&&(for /f "tokens=9" %a in (t.h) do @echo %a>w.h)&del t.h 写成 nslookup -q=mx 163.com>t.h 2>nul&&(for /f "tokens=9" %a in (t.h) do @echo %a)>w.h&del t.h 就可以了 [ Last edited by Hanyeguxing on 2010-3-23 at 17:32 ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |