Java利用RunTime执行Linux命令行,Java调用John进行zip压缩包破解

Java利用Runtime执行命令行,在windows上面可以调用成功,但在Linux上有时候调用失效,记录一下Linux环境中,java调用命令行执行程序:

主要这句话很重要:

命令前加sudo也可以

String[] cmdArray = new String[] { "/bin/sh", "-c", cmd };

另,Linux环境调用命令行时,如果命令行中包含()或&符号等,会终止命令,本例中文件名中包含(),那么就需要在文件名两端加上""号,把文件路径括起来,执行成功。

private  void execCommand(String zipName,String pFile) {
        try {
            Runtime runtime = Runtime.getRuntime();
            // 打开任务管理器,exec方法调用后返回 Process 进程对象
            //程序包所在目录的的完整路径,如/usr/john/
            String root = "/usr/john/zip2John";
            String cmd = " \""+zipName+"\" > "+pFile;
            logger.info("命令----------------------"+root +cmd);
            // 等待进程对象执行完成,并返回“退出值”,0 为正常,其他为异常
            String[] cmdArray = new String[] { "/bin/sh", "-c", root+cmd };
            Process process = runtime.exec(cmdArray);
            //程序返回写入到文件中
            FileWriter ft = new FileWriter(pFile);
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream(),"GBK"));
            String line = "";
            while ((line=bufferedReader.readLine())!=null){
                ft.write(line);
                System.out.println(line);
            }
            ft.flush();
            int exitValue = process.waitFor();
            System.out.println("exitValue: " + exitValue);
            // 销毁process对象
            process.destroy();
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值