栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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();
        }
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/871231.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号