您的位置:首页 > 运维架构 > Linux

Java /Jsp 执行操作系统命令 windows/Linux

2006-04-22 23:10 806 查看
1.Windows 很简单,写出来时为了和linux对比

public void execWindowsCmd(String cmd) throws Exception {
Runtime rt = Runtime.getRuntime();
Process ppp = rt.exec(cmd);
//input
InputStreamReader ir = new InputStreamReader(ppp.getInputStream());
LineNumberReader input = new LineNumberReader(ir);

String line;
while ((line = input.readLine()) != null)
com.pub.Log.logger.debug(this.getClass().getClass() + " " +
line);

//error
ir = new InputStreamReader(ppp.getErrorStream());
input = new LineNumberReader(ir);
while ((line = input.readLine()) != null)
com.pub.Log.logger.debug(this.getClass().getClass() + " " +
line);

ppp.waitFor();
}

2. Linux :首先要确保对于命令,允许Web服务器的用户是否有权限,普通命令和windows没什么区别。Linux管道命令不能这样直接执行,下面是具体实现fang

public void execLinuxCmd(String cmd) throws Exception {
Runtime rt = Runtime.getRuntime();
File f = new File(this.fileName + PDU_SHELL);
BufferedWriter bw = new BufferedWriter(new FileWriter(f));
bw.write("#!/bin/bash");
bw.newLine();
bw.write(cmd); //把命令写入一个文本shell文件
bw.flush();
bw.close();
cmd = f.getAbsolutePath();

Process ppp = rt.exec("chmod a+x " + cmd); //授权该shell文件可以执行
ppp.waitFor();

ppp = rt.exec(cmd); //执行shell

//input
InputStreamReader ir = new InputStreamReader(ppp.getInputStream());
LineNumberReader input = new LineNumberReader(ir);

String line;
while ((line = input.readLine()) != null)
com.pub.Log.logger.debug(this.getClass().getClass() + " " +
line);

//error
ir = new InputStreamReader(ppp.getErrorStream());
input = new LineNumberReader(ir);
while ((line = input.readLine()) != null)
com.pub.Log.logger.debug(this.getClass().getClass() + " " +
line);

ppp.waitFor();

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: