在Java程序中向Linux发送命令的工具类

有时候需要在Java中向Linux发送命令在这我写了一个工具类可以直接使用,需要的拿去

public class CallShell {

	public static int callshell(String command) throws IOException{
		   
		Runtime rt = Runtime.getRuntime();
		//String command = "/export/home/xlg/solarischk.sh";
		Process pcs = rt.exec(command);
		//PrintWriter outWriter = new PrintWriter(new File("/export/home/zjg/show.txt"));
		BufferedReader br = new BufferedReader(new InputStreamReader(pcs.getInputStream()));
		String line = new String();
		while ((line = br.readLine()) != null) {
			System.out.println(line);
			//outWriter.write(line);
		}
		try {
			pcs.waitFor();
		} catch (InterruptedException e) {
			System.err.println("processes was interrupted");
		}
		br.close();
		//outWriter.flush();
		//outWriter.close();
		int ret = pcs.exitValue();
		System.out.println(ret);
		System.out.println("执行完毕!");
		return ret;
	}
    /**
     * 执行shell命令
     *String[] cmd = { "sh", "-c", "lsmod |grep linuxVmux" }或者
     *String[] cmd = { "sh", "-c", "./load_driver.sh" }
     *int tp = 1 返回执行结果  非1 返回命令执行后的输出
     */
	public static String runCommand(String[] cmd, int tp) {
		StringBuffer buf = new StringBuffer(1000);
		String rt = "-1";
		try {
			Process pos = Runtime.getRuntime().exec(cmd);
			pos.waitFor();
			if (tp == 1) {
				if (pos.exitValue() == 0) {
					rt = "1";
				}
			} else {
				InputStreamReader ir = new InputStreamReader(
						pos.getInputStream());
				LineNumberReader input = new LineNumberReader(ir);
				String ln = "";
				while ((ln = input.readLine()) != null) {
					buf.append(ln + "<br>");
				}
				rt = buf.toString();
				input.close();
				ir.close();
			}
		} catch (java.io.IOException e) {
			rt = e.toString();
		} catch (Exception e) {
			rt = e.toString();
		}
		return rt;
	}
    /**
     * 执行简单命令
    * String cmd="ls"
     *int tp = 1 返回执行结果  非1 返回命令执行后的输出
     */
	public static String runCommand(String cmd,int tp){
		StringBuffer buf = new StringBuffer(1000);
		String rt = "-1";
		try {
			Process pos = Runtime.getRuntime().exec(cmd);
			pos.waitFor();
			if (tp == 1) {
				if (pos.exitValue() == 0) {
					rt = "1";
				}
			} else {
				InputStreamReader ir = new InputStreamReader(
						pos.getInputStream());
				LineNumberReader input = new LineNumberReader(ir);
				String ln = "";
				while ((ln = input.readLine()) != null) {
					buf.append(ln + "<br>");
				}
				rt = buf.toString();
				
				input.close();
				ir.close();
			}
		} catch (java.io.IOException e) {
			rt = e.toString();
		} catch (Exception e) {
			rt = e.toString();
		}
		return rt;
	}
	
	/**
     * 执行简单命令
    * String cmd="ls"
     *int tp = 1 返回执行结果  非1 返回命令执行后的输出
     */
	public static String runCommand2(String cmd,int tp){
		StringBuffer buf = new StringBuffer(1000);
		String rt = "-1";
		try {
			Process pos = Runtime.getRuntime().exec(cmd);
//			pos.waitFor();
			if (tp == 1) {
				if (pos.exitValue() == 0) {
					rt = "1";
				}
			} else {
				InputStreamReader ir = new InputStreamReader(
						pos.getInputStream());
				LineNumberReader input = new LineNumberReader(ir);
				String ln = "";
				while ((ln = input.readLine()) != null) {
					buf.append(ln + "<br>");
				}
				rt = buf.toString();
				
				input.close();
				ir.close();
			}
		} catch (java.io.IOException e) {
			rt = e.toString();
		} catch (Exception e) {
			rt = e.toString();
		}
		return rt;
	}
}

调用就更简单了,上个例子吧如下,其他方法使用也是一样的,

String cmd = "sudo service vbar start";
		//String s = CallShell.runCommand(cmd, 0);
		try {
			int ret = CallShell.callshell(cmd);
			System.out.println("s执行输出的结果为:"+ret);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值