import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
/**
* 通過ipconfig命令找到vpn地址; 通過此ip地址設置路由
*/
public class Ipconfig {
public static void main(String[] args) {
String ip = getIpByExecuteCmd();
String cmd1 = "route add 188.29.0.0 MASK 255.255.0.0 " + ip;
System.out.println("設置路由: " + cmd1);
//設置路由需要管理員權限,調用nircmd來執行命令
//官方64位下載地址:http://www.nirsoft.net/utils/nircmd-x64.zip
String x = "I:\\my_program\\nircmd-x64\\nircmd.exe elevate " + cmd1;
String r = getLocalMachineInfo(x);
System.out.println("結果: " + r);
}
private static String getIpByExecuteCmd() {
String s = getLocalMachineInfo("cmd /c ipconfig");
String search = "適配器 xx電信:";
String seach_ipv4 = "IPv4 地址";
String[] list = s.split("\n");
List<String> ll = new ArrayList<>();
for (String s1 : list) {
if (s1.indexOf(search) > 0 || s1.indexOf(seach_ipv4) > 0) {
System.out.println(s1);
ll.add(s1);
}
}
String str = ll.get(1);
String result = str.split(":")[1];
System.out.println("xx電信的ip: " + result);
return result;
}
static String getLocalMachineInfo(String cmd) {
String line = "";
int n;
Process ps = null;
BufferedReader br = null;
StringBuffer sb = new StringBuffer();
try {
ps = Runtime.getRuntime().exec(cmd);
br = new BufferedReader(new InputStreamReader(ps.getInputStream(), "gbk"));
while (null != (line = br.readLine())) {
sb.append(line).append("\n");
}
ps.waitFor();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
ps.destroy();
}
}
return sb.toString();
}
}
編譯執行java文件的bat腳本: vpn_set_route.bat
set JAVA_HOME=I:/Program" "Files/Java/jdk1.8.0_25
%JAVA_HOME%/bin/javac *.java
%JAVA_HOME%/bin/java -cp . Ipconfig