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. HDOJ 4085 Peach Blossom Spring

    discriptionTao Yuanming(365-427) was a Chinese poet of Eastern Jin dynasty. One of his most famous w ...

  2. 【分块】bzoj2453 维护队列

    http://www.cnblogs.com/autsky-jadek/p/4020296.html 同bzoj2120. #include<cstdio> #include<cma ...

  3. 倒置输入的数 Exercise07_02

    import java.util.Scanner; /** * @author 冰樱梦 * 时间:2018年下半年 * 题目:倒置输入的数 * */ public class Exercise07_0 ...

  4. codevs与noi做题改错本目录

    从2016.2.13开始: 1.  排序超时的问题---------目录:-测试习题 2.  超高精度乘法超时问题-----------目录:高精度计算 算法:快速傅里叶算法. 压位算法 3. 高精度 ...

  5. nodejs全局变量设置设置

    编辑 ~/.npmrc 加入下面内容 prefix = D:\tool\nodejs\node_global cache = D:\tool\nodejs\node_cache registry = ...

  6. OC语言基础之NSString

    1.字符串的创建 1: NSString *s1 = @"jack"; 2: 3: //NSString *s2 = [[NSString alloc] initWithStrin ...

  7. Android Studio 生成aar包,并非debug包,而是release包

    1.编写Module,作为library 下面是需要发布的aar包,上面的是随意的project 2.app依赖myLibrary 2.1 设置Project Structure 2.2 app依赖M ...

  8. Intellij IDEA自动生成serialVersionUID

    [Setting]->[Inspections]->[Serialization issues]->[Serializable class without ’serialVersio ...

  9. Android studio百度地图demo出现230错误,key校验失败

    转自daoxiaomianzi原文 Android studio 百度地图demo出现230错误,key校验失败 使用AndroidStudio导入Baidu地图的as版的demo,引入后,发现没有k ...

  10. ios(iphone/ipad)一个简单的用代码判断当前设备的方法

    直接NSLog(@"current_device:%@",[UIDevice currentDevice].model); 即可看出它输出的是当前设备,所以根据这个字符串可简单的判 ...