Atitit  atiMail atiDns新特性 v2  q39

V1  实现了基础的功能

V2  重构..使用自然语言的方式

c.According_to_the_domain_name("chinanetcenter.com").query_MX_records().outputAsJson().print();

其他的计划

V3 高的性能重构..lambda框架

作者:: 绰号:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿尔 拉帕努伊 ) 汉字名:艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://www.cnblogs.com/attilax/

package com.attilax.lang.mail;

public class MxScannerGui {

public static void main(String[] args) {

MxScanner c=new MxScanner();

c.According_to_the_domain_name("chinanetcenter.com").query_MX_records().outputAsJson().print();

}

}

package com.attilax.lang.mail;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import com.attilax.io.filex;

import com.attilax.io.pathx;

import com.attilax.json.AtiJson;

import com.attilax.lang.CmdX;

/**

* com.attilax.lang.mail.MxScanner

* @author Administrator

*

*/

public class MxScanner {

public static void main(String[] args) throws IOException {

String f = pathx.classPathParent()+"\\dom.txt";

//args[0].trim();

String dir =pathx.classPathParent()+"\\result.txt";

//+ " args[1].trim();

List<String> domains = filex.read2list(f);

filex fx = new filex(dir);

for (String dom : domains) {

try {

String cmd = "nslookup -qt=mx  163.com";

cmd = cmd.replaceAll("163.com", dom);

String t = CmdX.exec(cmd);

List<String> mxs = getMxs(t);

for (String mx : mxs) {

String lin_new=dom+"----"+mx;

fx.appendLine_flush_safe(lin_new);

}

System.out.println(t);

} catch (Exception e) {

e.printStackTrace();

}

}

fx.close();

System.out.println("--f");

}

private static List<String> getMxs(String lookupAfterRetTxt) {

List<String> mxs = new ArrayList<String>();

String[] lines = lookupAfterRetTxt.split("\n");

for (String line : lines) {

try {

if (line.contains("MX preference")

&& line.contains("mail exchanger")) {

String[] a = line.split("=");

String mx = a[a.length - 1].trim();

mxs.add(mx);

}

} catch (Exception e) {

e.printStackTrace();

}

}

return mxs;

}

String domain;

public MxScanner According_to_the_domain_name(String string) {

domain=string;

return this;

}

public MxScanner query_MX_records() {

query_MX_records(this.domain);

return this;

}

private MxScanner query_MX_records(String domain2) {

String cmd = "nslookup -qt=mx  163.com";

cmd = cmd.replaceAll("163.com", domain2);

String t = CmdX.exec(cmd);

List<String> mxs = getMxs(t);

rzt=mxs;

return this;

}

Object rzt;

Object final_rzt;

public MxScanner outputAsJson() {

final_rzt= AtiJson.toJson(rzt);

return this;

}

public void print() {

System.out.println(this.final_rzt);

}

}

Atitit  atiMail atiDns新特性 v2  q39的更多相关文章

  1. Atitit.aticmd v4  新特性q39 添加定时器释放功能

    Atitit.aticmd v4  新特性q39 添加定时器释放功能 V1  实现兰cmd V2 标准输入,标准输出,标准错误与重新定向 V3  stdout stderr统一重新定向 V4  添加定 ...

  2. Atitit opencv版本新特性attilax总结

    Atitit opencv版本新特性attilax总结 1.1. :OpenCV 3.0 发布,史上功能最全,速度最快的版1 1.2. 应用领域2 1.3. OPENCV2.4.3改进 2.4.2就有 ...

  3. Atitit s2018 s3 doc list alldvc.docx .docx s2018 s3f doc compc s2018 s3f doc homepc sum doc dvcCompc dtS312 s2018 s3f doc compc\Atitit PathUtil 工具新特性新版本 v8 s312.docx s2018 s3f doc compc\Atitit 操作日

    Atitit s2018 s3 doc list alldvc.docx .docx s2018 s3f doc compc s2018 s3f doc homepc sum doc dvcCompc ...

  4. Atitit.cateService分类管理新特性与设计文档说明v1

    Atitit.cateService分类管理新特性与设计文档说明v1 1. V2 新特性规划1 2. 分类管理1 3. 分类增加与修改维护2 4. Js控件分类数据绑定2 1. V2 新特性规划 增加 ...

  5. Atitit.linux 内核 新特性 新功能

    Atitit.linux 内核 新特性 新功能 1.  Linux 3.2内核新特性 2012-02-12 22:41:471 1.1. EXT4:支持更大的块2 1.2. BTRFS:更快的数据清理 ...

  6. Atitit.jquery 版本号新特性attilax总结

    Atitit.jquery 版本号新特性attilax总结 1. Jq1.4 1 2. 1.5 1 3. 1.6 3 4. Jq1.7 3 ⒉提升了事件委派时的性能有了大幅度的提升.尤其是在ie7下: ...

  7. Atitit html5.1 新特性attilax总结

    Atitit html5.1 新特性attilax总结 9. 嵌入 header 和 footer1 7. 校验表单1 6. 浏览器的上下文菜单2 1. 响应式图像2 Attilax觉得还不错的心特性 ...

  8. Atitit.jquery 版本新特性attilax总结

    Atitit.jquery 版本新特性attilax总结 1. Jq1.4 1 2. 1.5 1 3. 1.6 3 4. Jq1.7 3 ⒉提升了事件委派时的性能有了大幅度的提升,尤其是在ie7下: ...

  9. Atitit.  c# 语法新特性 c#2.0 3.0 4.0 4.5 5.0 6.0   attilax总结

    Atitit.  c# 语法新特性 c#2.0 3.0 4.0 4.5 5.0 6.0   attilax总结 1.1. C# 1.0-纯粹的面向对象 1.2. C# 2.0-泛型编程新概念 1.3. ...

随机推荐

  1. oracle tablespace usage status

    select a.tablespace_name, a.bytes / 1024 / 1024 "Sum MB", (a.bytes - b.bytes) / 1024 / 102 ...

  2. MySQL笔记之视图的使用详解

    原文:http://www.jb51.net/article/36363.htm 1.什么是视图 视图是从一个或多个表中导出来的表,是一种虚拟存在的表. 视图就像一个窗口,通过这个窗口可以看到系统专门 ...

  3. struts2 action 字段问题

    struts2最多只能解释两级字段,比如user.username,像user.info.age在类中属性类的三段字符不能识别,只能先用user,info 然后在user.setInfo(info);

  4. [BZOJ 1801] Chess

    Link: BZOJ 1801 传送门 Solution: 一眼看过去又像是状压$dp$的经典模型…… 但此题$n,m\le 100$ ,直接跑状压只有50分 此时要发现这道题的特点:每行/列不能放置 ...

  5. 【线段树】Gym - 100507C - Zhenya moves from parents

    线段树每个结点维护两个值,分别是这个区间的 负债 和 余钱. 按时间顺序从前往后看的时候,显然负债是单调不减的. 按时间顺序从后往前看的时候,显然余钱也是单调不减的,因为之前如果有余钱,可能会增加现在 ...

  6. 【模拟】bzoj2295 【POJ Challenge】我爱你啊

    #include<cstdio> #include<cstring> using namespace std; int n; char s[100001],table[]=&q ...

  7. 【kruscal】【最小生成树】【并查集扩展】bzoj3714 [PA2014]Kuglarz

    ORZ:http://www.cnblogs.com/zrts/p/bzoj3714.html #include<cstdio> #include<algorithm> usi ...

  8. java前后端加密(转载)

    最近做一个项目的安全渗透测评,测评人员发来一份测试报告,报告明确提出不允许明文参数传输,因为数据在传输的过程中可能被拦截,被监听,所以在传输数据的时候使用数据的原始内容进行传输的话,安全隐患是非常大的 ...

  9. Eclipse快速补全快捷键Ctrl+1修改为Android Studio的Alt+Enter

    步骤: Window ->Preferences->key-> type filter text 下输入quick fix(这个是快速补全的快捷键)改为Alt+Enter 下面的wh ...

  10. Inno Setup入门(十二)——Pascal脚本(1)

    事件函数(1) Inno Setup支持以下函数和过程. function InitializeSetup(): Boolean; 该函数在安装程序初始化时调用,返回False 将中断安装,True则 ...