java調用cmd以及liunx命令工具類

package com.citydo.xclouddesk.utils;

import lombok.extern.slf4j.Slf4j;
import java.io.*;
import java.nio.charset.Charset;
import java.util.List;

/**
 * @author nick
 */
@Slf4j
public class LinuxUtil {

    public static void main(String[] args) {
        String cmd = "dir";
        LinuxUtil.executeCmd(cmd);
        LinuxUtil.exec(cmd);
        List<String> commands = new ArrayList<>();
        commands.add("cd /home");
        commands.add("ll");
        commands.add("ls");
        LinuxUtil.execFlow(commands);

    }

    /**
     * 批量 liunx命令
     * @param commands
     * @return
     */
    public static Object execFlow(List<String> commands) {
        try {
            String cmds = "";
            for (String cmd : commands) {
                cmds += cmd + ";";
            }
            String[] cmdA = {"/bin/sh", "-c", cmds};
            Process process = Runtime.getRuntime().exec(cmdA);
            LineNumberReader br = new LineNumberReader(new InputStreamReader(
                    process.getInputStream(), Charset.forName("GBK")));
            StringBuffer sb = new StringBuffer();
            String line;
            while ((line = br.readLine()) != null) {
                log.info("輸出結果:{}",line);
                sb.append(line).append("\n");
            }
            br.close();
            process.waitFor();
            return sb.toString();
        } catch (Exception e) {
            log.info("Linux命令異常:{}",e.getMessage());
        }
        return null;
    }

    /**
     * 單條liunx命令
     * @param cmd
     * @return
     */
    public static Object exec(String cmd) {
        try {
            String[] cmdA = {"/bin/sh", "-c", cmd};
            Process process = Runtime.getRuntime().exec(cmdA);
            LineNumberReader br = new LineNumberReader(new InputStreamReader(
                    process.getInputStream(), Charset.forName("GBK")));
            StringBuffer sb = new StringBuffer();
            String line;
            while ((line = br.readLine()) != null) {
                log.info("輸出結果:{}",line);
                sb.append(line).append("\n");
            }
            br.close();
            process.waitFor();
            return sb.toString();
        } catch (Exception e) {
            log.info("Linux命令異常:{}",e.getMessage());
        }
        return null;
    }


    /**
     * InputStream inStream = p.getInputStream();
     * InputStreamReader inReader = new InputStreamReader(inStream);
     * BufferedReader inBuffer = new BufferedReader(inReader);
     * @param cmdStr  CMD命令字符
     */
    public static Object executeCmd(String cmdStr) {
        Runtime run = Runtime.getRuntime();
        try {
            Process process = run.exec("cmd.exe /c " + cmdStr);
            LineNumberReader br = new LineNumberReader(new InputStreamReader(
                    process.getInputStream(), Charset.forName("GBK")));
            StringBuffer sb = new StringBuffer();
            String line;
            while((line = br.readLine()) != null){
                log.info("輸出結果:{}",line);
                sb.append(line).append("\n");
            }
            br.close();
            process.waitFor();
            return sb.toString();
        } catch (Exception e) {
            log.info("cmd命令異常:{}",e.getMessage());
        }
        return null;
    }


}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章