一、使用的API说明
Runtime.getRuntime()方法是取得当前JVM的运行环境,也是java中唯一可以得到运行环境的入口。
process这个类是一个抽象类,封装了一个进程,方法如下:
Process exec(String command)
在单独的进程中执行指定的字符串命令。
Process exec(String command, String[] envp)
在指定环境的单独进程中执行指定的字符串命令。
Process exec(String command, String[] envp, File dir)
在有指定环境和工作目录的独立进程中执行指定的字符串命令。
Process exec(String[] cmdarray)
在单独的进程中执行指定命令和变量。
Process exec(String[] cmdarray, String[] envp)
在指定环境的独立进程中执行指定命令和变量。
Process exec(String[] cmdarray, String[] envp, File dir)
在指定环境和工作目录的独立进程中执行指定的命令和变量。
其中:
command:一条指定的系统命令。
envp:环境变量字符串数组,其中每个环境变量的设置格式为name=value;如果子进程应该继承当前进程的环境,则该参数为null。
dir:子进程的工作目录;如果子进程应该继承当前进程的工作目录,则该参数为null。
cmdarray:包含所调用命令及其参数的数组
国内公共DNS服务器地址:
1、DNSPod Public DNS:
114.114.114.114
119.29.29.29
2、阿里公共DNS服务器IPv4地址:
223.5.5.5
3、百度公共DNS服务器IPv4地址:
180.76.76.76
4、oneDNS
117.50.11.11
5、DNSpai Public DNS
中国电信/移动宽带 101.226.4.6
中国联通宽带 123.125.81.6
6、CNNIC sDNS
中国互联网络信息中心公共DNS服务器IPv4地址
1.2.4.8
7、CFIEC Public DNS
中国下一代互联网工程中心公共DNS服务器IPv6地址
240c::6666
备用地址240c::6644
9、Google Public DNS
公共DNS服务器IPv4地址
首选地址8.8.8.8
备用地址8.8.4.4
公共DNS服务器IPv6地址
首选地址2001:4860:4860::8888
备用地址2001:4860:4860::8844
二、JAVA程序
1、域名解析
命令cmd:传入参数第一个参数是命令,后边全是参数
private String filePath="/home/test/t.sh";
public String executeLinuxCmd(String ip,String domain) {
String cmdd=filePath;
//传入参数第一个参数是命令,后边全是参数
String[] cmd={"sh",cmdd,ip,domain};
Runtime run = Runtime.getRuntime();
try {
Process process = run.exec(cmd);
InputStream in = process.getInputStream();
BufferedReader bs = new BufferedReader(new InputStreamReader(in));
StringBuffer out = new StringBuffer();
String line;
while ((line = bs.readLine()) != null) {
//执行结果加上回车
out.append(line).append("\n");
}
System.out.println("job result ===>[" + out.toString() + "]");
in.close();
// process.waitFor();
process.destroy();
return out.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
linx脚本:
测试程序:
String result = test.executeLinuxCmd("114.114.114.114", "www.baidu.com");
System.err.println("结果====>:"+result);
String[] results = result.split("\n");
ArrayList<String> newResult = new ArrayList<>();
//重新组装
for (int i = 0; i < results.length; i++) {
//规则校验
if (RegexUtil.checkIp(results[i])==true) {
newResult.add(results[i]);
}
}
//打印结果
for (String newResultss : newResult) {
System.err.println("ip==>"+newResultss);
}
结果;
2、测试网是否能够连接服务器
程序;
//传入参数第一个参数是命令,后边全是参数
String[] cmd={"telnet",ip,port};
Runtime run = Runtime.getRuntime();
try {
Process process = run.exec(cmd);
InputStream in = process.getInputStream();
BufferedReader bs = new BufferedReader(new InputStreamReader(in));
StringBuffer out = new StringBuffer();
String line;
while ((line = bs.readLine()) != null) {
//执行结果加上回车
out.append(line).append("\n");
}
System.out.println("job result ===>[" + out.toString() + "]");
in.close();
// process.waitFor();
process.destroy();
return out.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
测试程序;
String result = test.executeLinuxCmd("192.168.1.69", "28199");
System.err.println("结果====>:"+result);
结果:
如上结果则网通