All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.hundsun.lightdb.unisql.utils.ExecuteUtils Maven / Gradle / Ivy

package com.hundsun.lightdb.unisql.utils;

import com.hundsun.lightdb.unisql.model.SshResponse;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

@Slf4j
public class ExecuteUtils {

    public static final int STATUS_SUCCESS = 0;
    public static final int STATUS_ERROR = 1;

    public static SshResponse execResult(String cmd) {
        BufferedReader inputBufferedReader = null;
        BufferedReader errorBufferedReader = null;
        String outputTrue = "";
        String outputFalse = "";
        int waitFor = STATUS_SUCCESS;
        try {
            /* 调用、输出 */
            Process process = Runtime.getRuntime().exec(cmd);
            inputBufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            errorBufferedReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
            String line = null;
            // 正常信息
            while ((line = inputBufferedReader.readLine()) != null) {
                outputTrue = outputTrue + line + System.lineSeparator();
            }
            if(outputTrue!= null && !outputTrue.isEmpty()){
                outputTrue = StringUtils.substringBeforeLast(outputTrue,"\n");
            }
            // 错误信息
            while ((line = errorBufferedReader.readLine()) != null) {
                outputFalse = outputFalse + line + System.lineSeparator();
            }
            /* 判断是否正常 */
            waitFor = process.waitFor();
        } catch (Exception e) {
            log.error(e.getMessage(), e);
            return new SshResponse(outputTrue, e.getMessage(), STATUS_ERROR);
        } finally {
            if (inputBufferedReader != null) {
                try {
                    inputBufferedReader.close();
                } catch (IOException e) {
                    log.error(e.getMessage(), e);
                }
            }
        }
        if (waitFor != STATUS_SUCCESS && StringUtils.isBlank(outputFalse)) {
            outputFalse = outputTrue;
        }
        return new SshResponse(outputTrue, outputFalse, waitFor);
    }

    public static SshResponse execResultShell(String path) {
        return execResultShell(path, true);
    }

    public static SshResponse execResultShell(String path, boolean redirectErrorStream) {
        BufferedReader inputBufferedReader = null;
        BufferedReader errorBufferedReader = null;
        String outputTrue = "";
        String outputFalse = "";
        int waitFor = STATUS_SUCCESS;
        try {
            /* 调用、输出 */
            ProcessBuilder pb = new ProcessBuilder("/bin/bash", path);
            pb.redirectErrorStream(redirectErrorStream);
            Process process = pb.start();
            inputBufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            errorBufferedReader = new BufferedReader(new InputStreamReader(process.getErrorStream()));
            String line = null;
            // 正常信息
            while ((line = inputBufferedReader.readLine()) != null) {
                outputTrue = outputTrue + line + System.lineSeparator();
            }
            if(outputTrue!= null && !outputTrue.isEmpty()){
                outputTrue = StringUtils.substringBeforeLast(outputTrue,"\n");
            }
            // 错误信息
            while ((line = errorBufferedReader.readLine()) != null) {
                outputFalse = outputFalse + line + System.lineSeparator();
            }
            /* 判断是否正常 */
            waitFor = process.waitFor();
        } catch (Exception e) {
            log.error(e.getMessage(), e);
            return new SshResponse(outputTrue, e.getMessage(), STATUS_ERROR);
        } finally {
            if (inputBufferedReader != null) {
                try {
                    inputBufferedReader.close();
                } catch (IOException e) {
                    log.error(e.getMessage(), e);
                }
            }
        }
        if (waitFor != STATUS_SUCCESS && StringUtils.isBlank(outputFalse)) {
            outputFalse = outputTrue;
        }
        return new SshResponse(outputTrue, outputFalse, waitFor);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy