|
qwedsa500
新手上路
积分 2
发帖 2
注册 2010-3-22
状态 离线
|
『楼 主』:
请教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/view ... 0405&sid=RVd000这个帖子lifeisn老大的回复才有的这个想法,不知哪里错了,还请高手不吝赐教,小弟跪谢~~~~
[ Last edited by qwedsa500 on 2010-3-22 at 02:59 ]
|
|
2010-3-22 02:57 |
|
|
Hanyeguxing
银牌会员
正在学习中的菜鸟...
积分 1039
发帖 897
注册 2009-3-1 来自 在地狱中仰望天堂
状态 离线
|
『第
2 楼』:
nslookup -q=mx 163.com>t.h 2>nul&&(for /f "tokens=3,5" %a in (t.h) do @if "%a"=="address" echo %b)&del t.h 运行: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下运行后返回的
如果想得到任意一个地址,可以:
nslookup -q=mx 163.com>t.h 2>nul&&(for /f "tokens=3,5" %a in (t.h) do @if "%a"=="address" set b=%b)&del t.h|echo %b% 在这里,用&&或&都可以,推荐用&&。
管道 | 在这里起扩展%b%延迟的作用
[ Last edited by Hanyeguxing on 2010-3-23 at 16:37 ]
|
批处理之家 http://bbs.bathome.net/forum-5-1.html |
|
2010-3-22 15:04 |
|
|
qwedsa500
新手上路
积分 2
发帖 2
注册 2010-3-22
状态 离线
|
『第
3 楼』:
首先非常感谢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时,文件中也只有一条记录。
如何才能把四条记录都保存下来呢?
|
|
2010-3-22 23:47 |
|
|
luuk
初级用户
积分 69
发帖 46
注册 2010-3-18 来自 山东
状态 离线
|
『第
4 楼』:
nslookup -q=mx 163.com 详细解释一下是什么意思。。nslookup用法是怎样啊,用来干哈的?
|
|
2010-3-23 09:57 |
|
|
Hanyeguxing
银牌会员
正在学习中的菜鸟...
积分 1039
发帖 897
注册 2009-3-1 来自 在地狱中仰望天堂
状态 离线
|
『第
5 楼』:
Quote: | Originally posted by luuk at 2010-3-23 09:57:
nslookup -q=mx 163.com 详细解释一下是什么意思。。nslookup用法是怎样啊,用来干哈的? |
|
用来解析163.com邮件交换器的ip地址
Quote: | Originally posted by qwedsa500 at 2010-3-22 23:47:
当我改写成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时,文件中也只有一条记录。
如何才能把四条记录都保存下来呢? |
|
你把
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 ]
|
批处理之家 http://bbs.bathome.net/forum-5-1.html |
|
2010-3-23 16:09 |
|
|