`
xinklabi
  • 浏览: 1591416 次
  • 性别: Icon_minigender_1
  • 来自: 吉林
文章分类
社区版块
存档分类
最新评论

利用Apache Commons Exec调用命令行并取得命令行的输出(实例)

 
阅读更多
[java] view plaincopy
 
  1. public String ping(String ip) {  
  2.   
  3.         try {  
  4.   
  5.             String command = "ping "+ip;  
  6.   
  7.             ByteArrayOutputStream outputStream = new ByteArrayOutputStream();  
  8.   
  9.             ByteArrayOutputStream errorStream = new ByteArrayOutputStream();  
  10.   
  11.             CommandLine commandline = CommandLine.parse(command);  
  12.   
  13.             DefaultExecutor exec = new DefaultExecutor();  
  14.   
  15.             exec.setExitValues(null);  
  16.   
  17.             PumpStreamHandler streamHandler = new PumpStreamHandler(outputStream,errorStream);  
  18.   
  19.             exec.setStreamHandler(streamHandler);  
  20.   
  21.             exec.execute(commandline);  
  22.   
  23.             String out = outputStream.toString("gbk");  
  24.   
  25.             String error = errorStream.toString("gbk");  
  26.   
  27.             return out+error;  
  28.   
  29.         } catch (Exception e) {  
  30.   
  31.             log.error("ping task failed.",e);  
  32.   
  33.             return e.toString();  
  34.   
  35.         }  
  36.   
  37.     }  

官方教程参考:http://commons.apache.org/exec/tutorial.html

分享到:
评论

相关推荐

    Java简单实现调用命令行并获取执行结果示例

    本文将结合实例形式详细介绍Java简单实现调用命令行并获取执行结果示例,包括如何使用Runtime.getRuntime().exec()方法执行ping命令、如何使用BufferedReader读取命令行执行结果、如何处理异常等。 命令行调用技术...

    java执行可执行文件,Runtime.exec、ProcessBuilder、commons-exec

    - `execute(cmdLine)`执行命令行并返回退出值。 ### 总结 以上三种方法各有优劣。`Runtime.exec()`简单但功能有限;`ProcessBuilder`提供了更多灵活性;而`commons-exec`则更适合复杂的进程管理场景。根据实际需求...

    java工具类

    23. **Apache Commons Exec**:执行外部程序并管理其生命周期的工具。 24. **Apache Commons Lang3**:扩展了Java的标准库,提供了更多有用的工具类。 25. **Apache Commons Compress**:文件压缩和解压工具,支持...

    java代码中调用linux/unix命令

    Apache Commons Exec库提供了一个更高级的API,可以更方便地处理命令执行,如重定向输入、输出和错误流,处理复杂的命令行构造等。 8. **与Shell脚本结合** 有时,单个命令无法满足需求,这时可以编写Shell脚本,...

    用java调用python

    Apache Commons Exec 是一个用于执行外部进程的库,提供了更高级别的 API 来管理和控制外部进程。相比直接使用 `Runtime.exec()`,它能更好地处理输入/输出流,错误处理和进程生命周期管理。 4. **使用 Py4J**: ...

    java解压缩rar

    3. **调用解压方法**:在你的代码中,你需要实例化`RarUtil`类,并调用其提供的解压方法,传入RAR文件的路径和解压的目标目录。例如: ```java RarUtil rarUtil = new RarUtil(); rarUtil.unrar("path/to/rar/...

    java连接redis需要的jar包

    Apache Commons Pool 2是一个通用的对象池库,它为其他组件(如Jedis)提供了对象池化服务,有助于提高资源利用率和系统性能。commons-pool2-2.4.2.jar就是这个库的特定版本。在Jedis中,它可以用来管理Redis连接,...

    利用Python+Java调用Shell脚本时的死锁陷阱详解

    此外,Java社区提供了第三方库如Apache Commons Exec,使得处理子进程的输出更加方便。 在调用Shell脚本时,特别要注意以下几点: 1. **管道和重定向**:确保正确处理管道和重定向,避免缓冲区溢出导致的死锁。 2....

    redis依赖包

    在Java环境中与Redis进行交互时,通常会依赖一些客户端库,其中最常见的是Jedis和Apache Commons Pool 2。这两个组件在给定的压缩包文件中都有包含。 Jedis是Java语言的一个Redis客户端,它提供了丰富的API,使得...

    Java 执行本地脚本携带多参数

    在实际开发中,除了上述方法外,还可以利用第三方库如Apache Commons Exec或者Guava的`MoreExecutors`来更方便地执行命令和管理进程。 文件名 "四种单例模式的实现方法及其利弊 .txt" 虽然与Java执行本地脚本无关,...

    java反序列化漏洞URLClassLoader利用1

    1. **创建Transformer链**:`Transformer`是Apache Commons Lang库中的一个接口,用于转换对象。在这里,一系列`Transformer`被用来构建一个反射调用链。 2. **构造URLClassLoader**:首先,使用`...

    Redis的jar包

    `commons-pool-1.5.4.jar.zip`是Apache Commons Pool的旧版本,这是一个通用对象池库,用于创建和管理资源池。在与Redis通信时,由于频繁的连接和断开,直接创建和销毁连接会带来较大的性能开销。通过对象池,我们...

    Java程序中启动浏览器

    - **使用第三方库**:如 Apache Commons Exec 可以提供更强大的命令执行能力,适合更复杂的场景。 #### 总结 通过以上分析,我们了解了如何在 Java 程序中启动浏览器的基本原理和技术细节。这对于实现自动化测试、...

    java修改浏览器默认主页

    在Java编程环境中,修改浏览器默认主页是一个涉及到操作系统交互和进程控制的任务。...同时,也可以参考其他开源项目或库,如Apache Commons Exec,它提供了更高级别的API来处理进程执行,能简化上述过程。

    redisclient-2.5

    另一个提及的库是Apache Commons Pool2-2.2.jar,这是一个对象池服务,主要用于管理对象的创建和复用,以提高性能。在Jedis中,它被用来实现连接池功能,允许开发者高效地管理和重用Redis连接,避免频繁创建和销毁...

    Java远程连接Linux服务器并执行命令及上传文件功能

    在执行远程命令方面,Java程序可以通过ChannelSftp的exec()方法调用SSH服务器上的命令行工具执行命令。这一方法简洁有效,能够让Java程序直接与Linux服务器上的命令行接口交互。 文件的上传和下载是远程操作的另一...

    redis3.2+jedis2.8.jar+common-pool2.jar+common-pool2-source.rar

    然后,可以创建Jedis实例,通过实例调用相关方法进行数据操作。例如: ```java Jedis jedis = new Jedis("localhost", 6379); jedis.set("key", "value"); String value = jedis.get("key"); ``` 对于大量并发请求...

    java、php、C#、asp实现短信群发功能的方法

    在Java中,通常会用到Apache Commons HttpClient库来发起HTTP请求,调用短信API接口。首先需要在代码中引入相关的库文件,并创建HttpClient实例。通过创建HttpPost对象并设置相关参数(比如手机号、短信内容、API...

    Redis的Java客户端Jedis

    Jedis提供了与Apache Commons Pool2集成的连接池功能。在项目中,我们需要引入`commons-pool2-2.5.0.jar`作为依赖。 - **初始化连接池**:创建`JedisPoolConfig`配置对象,设置最大空闲连接、最大连接数等参数,...

Global site tag (gtag.js) - Google Analytics