java执行linux明文脚本,或命令

明文执行shell脚本

场景:项目需要,每次执行的脚本可能不同,脚本可以以明文的方式看见,也为了方便对脚本进行动态修改。
注意:以下两个方法都会返回一个Map<String, List< String >>,里面会放着命令执行成功的结果,和命令执行报错时的结果。
key:res,里面是命令执行成功后命令或脚本的返回结果。
key:err, 里面放的是命令执行后,有报错的信息。

方法1

/**
* 明文执行shell脚本的方法
* @param shellPath 脚本临时存放路径
* @param shellName 脚本名称
* @param lineFlag 每行明文脚本名称的分割符号
* @param shellStr 脚本内容
* @return
*/
执行明文脚本的方法,根本的是将明文的脚本按照一个分隔符进行切割,并在linux生成一个文件的方式去执行。

方法2

/**
*将n个命令放在一个事务中执行
*@param commands 是一个list,把所有要执行的linux命令按顺序放到里面
*/
将许多个命令放在一个事务中执行,相当于打开一个窗口,分别执行每个命令。

package com.yc.learn.util;

import java.io.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;

public class LinuxUtil {
   
	
    /**
     * 明文执行shell脚本的方法
     * @param shellPath 脚本临时存放路径
     * @param shellName 脚本名称
     * @param lineFlag 每行明文脚本名称的分割符号
     * @param shellStr 脚本内容
     * @return
     */
    public static Map<String, List<String>> execShell(String shellPath,String shellName,String lineFlag,String shellStr){
   
        String tempShellPath=shellPath==null?"./":shellPath.endsWith("/")?shellPath:shellPath+"/";
        String tempShellName=shellName==null?"shellCommand.sh":shellName;
        String pathAndFileName=tempShellPath+tempShellName;
        if (shellStr!=null&&shellStr!="") {
   
            shellStr = shellStr.replaceAll(lineFlag, System.lineSeparator());
            byte[] sourceByte = shellStr.getBytes();
            FileOutputStream outStream=null;
            try {
   
                File file = new File(pathAndFileName);
                if (!file.exists
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值