Java tutorial
/** * Copyright 2016 benjobs * <p> * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * <p> * http://www.apache.org/licenses/LICENSE-2.0 * <p> * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package com.jredrain.base.utils; import org.apache.commons.exec.CommandLine; import org.apache.commons.exec.DefaultExecutor; import org.apache.commons.exec.PumpStreamHandler; import java.io.*; /** * @author <a href="mailto:benjobs@qq.com">B e n</a> * @name:CommonUtil * @version: 1.0.0 * @company: com.jredrain * @description: * @date: 2012-10-9 pa 18:03<br/><br/> **/ @SuppressWarnings({ "rawtypes", "unchecked" }) public class CommandUtils implements Serializable { private static final long serialVersionUID = 6458428317155311192L; public static File createShellFile(String command, String shellFileName) { String dirPath = IOUtils.getTempFolderPath(); File dir = new File(dirPath); if (!dir.exists()) dir.mkdirs(); String tempShellFilePath = dirPath + File.separator + shellFileName + ".sh"; File shellFile = new File(tempShellFilePath); try { if (!shellFile.exists()) { PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(tempShellFilePath))); out.write("#!/bin/bash\n" + command); out.flush(); out.close(); } } catch (Exception e) { e.printStackTrace(); } finally { return shellFile; } } public static String executeCommand(String shellFileName, String command, String args) { File shellFile = createShellFile(command, shellFileName); return executeShell(shellFile, args); } public static String executeShell(File shellFile, String... args) { String info = null; ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); try { String params = " "; if (CommonUtils.notEmpty(args)) { for (String p : args) { params += p + " "; } } CommandLine commandLine = CommandLine.parse("/bin/bash +x " + shellFile.getAbsolutePath() + params); DefaultExecutor exec = new DefaultExecutor(); exec.setExitValues(null); PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream, outputStream); exec.setStreamHandler(streamHandler); exec.execute(commandLine); info = outputStream.toString().trim(); } catch (Exception e) { e.printStackTrace(); } finally { try { outputStream.flush(); outputStream.close(); } catch (IOException e) { e.printStackTrace(); } return info; } } }