java程序中可以执行linux或者windows命令 Shell,可以用如下方式实现执行:
String cmd="firewall-cmd --reload";
"firewall-cmd --permanent --add-rich-rule=\"rule family=\"ipv4\" source address=\""+ip+"\" reject\"";
Process exec = Runtime.getRuntime().exec(cmd);
try {
if(0== exec.waitFor()){// 当前线程等待 0表示正常终止
//System.out.println("cmd执行成功");
}
} catch (InterruptedException e) {
Logger.e(e);
}
但是在执行一些含有特殊字符或通配符等的字符串命令时会发现,上述方法无法正确执行,如
String cmd="firewall-cmd --permanent --add-rich-rule=\"rule family=\"ipv4\" source address=\""+ip+"\" reject\"";
这时可以采用如下方式来完成命令行的执行操作:
String[] cmdArr = new String[3];
cmdArr[0] = "/bin/sh";
cmdArr[1] = "-c";
cmdArr[2] = cmd;
process = Runtime.getRuntime().exec(cmdArr);
另外,若需顺序连续执行多条命令时可以采用以下方式:
Runtime.getRuntime().exec(/*命令1*/).waitFor();
Runtime.getRuntime().exec(/*命令2*/).waitFor();
Runtime.getRuntime().exec(/*命令3*/).waitFor();