DBMNG数据库管理与应用

所有存在都是独创。
当前位置:首页 > 服务器配置 > win&linux

java执行Linux Shell命令,支持通配符(*)和特殊字符当方法

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();


本站文章内容,部分来自于互联网,若侵犯了您的权益,请致邮件chuanghui423#sohu.com(请将#换为@)联系,我们会尽快核实后删除。
Copyright © 2006-2023 DBMNG.COM All Rights Reserved. Powered by DEVSOARTECH            豫ICP备11002312号-2

豫公网安备 41010502002439号