`
zhaoyl
  • 浏览: 214883 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

利用apache commons-net 开源包,使用telnet方式获取AIX主机信息

阅读更多

/***

** QQ:252574345

** MSN:lele_love_lomboz@hotmail.com

***/

 

 

一。AIX简介

 

AIX全名为Advanced Interactive Executive,俗称“An IBM uniX”或“Advanced IBM uniX”。

作为综合评价第一的unix操作系统(D.H. Brown咨询公司,1998 ),AIX是真正的第二代unix,具有性能卓越、易于使用、扩充性强、适合企业关键应用等众多特点。

支持300种以上的IBM软件和超过13000家独立软件厂商的软件产品。

是非常优秀的操作系统

在银行、电力系统、电信移动等企业应用很广泛

下面,我们介绍下对AIX系统的信息采集

二。

下面是一个利用apache commons-net 开源包, 使用telnet方式连接的工具类

实现对AIX主机信息的采集

因为提示符已经写死了,如果采用本例,请先按照自己的真实环境修改提示符和用户名和密码 等基本信息

 

 

package test.collector.telnet;

import java.io.InputStream;
import java.io.PrintStream;

import org.apache.commons.net.telnet.TelnetClient;

/**
 * 利用apache net 开源包,使用telnet方式获取AIX主机信息
 * @author zhaoyl
 * @date 20008.7.21
 * @version 1.2
 */
public class NetTelnet {

 //Telnet对象
 private TelnetClient telnet = new TelnetClient();
   
 
 private InputStream in;

 private PrintStream out;
   
 //提示符。具体请telnet到AIX主机查看
 private char prompt = '#';
    //telnet端口
 private String port;
    //用户
 private String user;
    //密码
 private String password;
    //IP地址
 private String ip;

 public NetTelnet() {
  
  try {
   //AIX主机IP
   this.ip = "10.1.2.222";
   this.password = "loeisdke";
   this.user = "whdiwpasdq232sd2323";
   this.port = "23";
   telnet.connect(ip, Integer.parseInt(port));

   in = telnet.getInputStream();
   out = new PrintStream(telnet.getOutputStream());
            //登录
   readUntil("login: ");
   write(user);
   readUntil("Password: ");
   write(password);
   readUntil(prompt + " ");
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 /**
  * 读取分析结果
  * @param pattern
  * @return
  */
 public String readUntil(String pattern) {
  try {
   char lastChar = pattern.charAt(pattern.length() - 1);
   StringBuffer sb = new StringBuffer();

   char ch = (char) in.read();
   while (true) {

    sb.append(ch);
    if (ch == lastChar) {
     if (sb.toString().endsWith(pattern)) {
      return sb.toString();
     }
    }
    ch = (char) in.read();
   }
  } catch (Exception e) {
   e.printStackTrace();
  }
  return null;
 }

 /**
  * 写
  * @param value
  */
 public void write(String value) {
  try {
   out.println(value);
   out.flush();

  } catch (Exception e) {
   e.printStackTrace();
  }
 }

    /**
     * 向目标发送命令字符串
     * @param command
     * @return
     */
 public String sendCommand(String command) {
  try {
   write(command);
   return readUntil(prompt + " ");
  } catch (Exception e) {
   e.printStackTrace();
  }
  return null;
 }
   
 /**
  * 关闭连接
  *
  */
 public void disconnect() {
  try {
   telnet.disconnect();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }

 public static void main(String[] args) {
  try {
   NetTelnet telnet = new NetTelnet();
   //通过aix的命令“查找主机名称”获取数据
   //命令是 "hostname"
   //不熟悉命令的参考<<AIX网络管理手册>>
   String result = telnet.sendCommand("hostname");
   
   System.out.println(result);
   //最后一定要关闭
   telnet.disconnect();
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

分享到:
评论
11 楼 zxd7900663 2009-06-17  
问下楼主String result = telnet.sendCommand("hostname");如果发送的命令要执行很久,java代码一定要等待指令执行完了才能再执行下去么?比如telnet.sendCommand( "./run-ant.sh" )去执行编译需要很长时间,我想java代码不等他执行完直接执行下去行么?
10 楼 zhaoyl 2008-10-27  
java.net.ConnectException: Connection refused: connect

很明显连接不上 主机

建议你用try catch打印出详细错误,比较容易看出问题
9 楼 itlangqun 2008-10-25  
我怎么连接不上啊?
java.net.ConnectException: Connection refused: connect
报了这个错.我关闭所有防火墙与杀毒软件啦.
IP和账号我也都改啦.不过我关闭了guest账号,不知道哦啊有影响吗?
8 楼 itlangqun 2008-10-25  
我在这里面找到啦.
http://commons.apache.org/downloads/download_net.cgi
7 楼 itlangqun 2008-10-25  
哪里能下载到那个开源包?
6 楼 zhaoyl 2008-09-25  
嗯,楼上正解,确实如此。这个只是个demo
5 楼 yangyi 2008-09-24  
1 可以先export PS1=YOUR_PATTERN
2 持有这个链接很不稳定,耗资源,所以用nohup...
4 楼 zhaoyl 2008-09-24  
ok,问题解决就好了,呵呵我也学到了点
3 楼 chengnuoangel 2008-09-24  
问题已经解决了
我测试的HP的UNIX服务器,我为了看到执行的过程
则System.out.println(readUntil("login:"))、System.out.println(readUntil("Password:"))等信息,所以导致了很大的内存被吃掉了,把这些语句屏蔽掉就没有问题了。


2 楼 zhaoyl 2008-09-24  
    if (ch == lastChar) {
     if (sb.toString().endsWith(pattern)) {
      return sb.toString();
     }

请先debug,2个条件是否都满足了
我刚才在aix低版本,5版本下测试都没问题
具体问题在贴出来,一起看看
1 楼 chengnuoangel 2008-09-24  
我有一个问题,当我用readUntil("login:")时,while循环里边的判断满足判断后并没有return 出来
而是会一直读数据,造成了死循环。
这是为什么啊?

相关推荐

    apache commons 常用jar包 commons-validator commons-transaction commons-lang等

    jar包大小:135KB commons-validator-1.3.1.jar jar包大小:93KB commons-transaction-1.2.jar jar包大小:141KB commons-scxml-0.6.jar jar包大小:254KB commons-primitives-1.0.jar jar包大小:60KB commons-pool-1.3....

    commons-net-3.3-API文档-中文版.zip

    赠送jar包:commons-net-3.3.jar; 赠送原API文档:commons-net-3.3-javadoc.jar; 赠送源代码:commons-net-3.3-sources.jar; 赠送Maven依赖信息文件:commons-net-3.3.pom; 包含翻译后的API文档:commons-...

    commons-net-jar包.zip

    commons-net-jar包压缩包中包含commons-net-3.3.jar和commons-net-3.4.jar

    apache-commons-id.jar和commons-discovery-0.2.jar

    apache-commons-id.jar和commons-discovery-0.2.jar

    commons-net-3.8.0-API文档-中文版.zip

    赠送jar包:commons-net-3.8.0.jar; 赠送原API文档:commons-net-3.8.0-javadoc.jar; 赠送源代码:commons-net-3.8.0-sources.jar; 赠送Maven依赖信息文件:commons-net-3.8.0.pom; 包含翻译后的API文档:...

    apache commons-net-3.5

    apache commons-net-3.5 实现 FTP 上传文件的神器,拿走不谢! 主要涉及上传文件的jar,希望能帮到你。

    commons-net-3.6-API文档-中英对照版.zip

    赠送jar包:commons-net-3.6.jar; 赠送原API文档:commons-net-3.6-javadoc.jar; 赠送源代码:commons-net-3.6-sources.jar; 赠送Maven依赖信息文件:commons-net-3.6.pom; 包含翻译后的API文档:commons-...

    apache-jakarta旗下的所有开源项目jar文件

    apache-jakarta-commons-codec.jar apache-jakarta-commons-collections.jar apache-jakarta-commons-discovery.jar apache-jakarta-commons-email.jar apache-jakarta-commons-fileupload.jar apache-jakarta-...

    commons-math3-3.5-API文档-中文版.zip

    赠送jar包:commons-math3-3.5.jar; 赠送原API文档:commons-math3-3.5-javadoc.jar; 赠送源代码:commons-math3-3.5-sources.jar; 赠送Maven依赖信息文件:commons-math3-3.5.pom; 包含翻译后的API文档:...

    commons-net-3.8.0-API文档-中英对照版.zip

    赠送jar包:commons-net-3.8.0.jar; 赠送原API文档:commons-net-3.8.0-javadoc.jar; 赠送源代码:commons-net-3.8.0-sources.jar; 赠送Maven依赖信息文件:commons-net-3.8.0.pom; 包含翻译后的API文档:...

    commons-net-2.2-API文档-中文版.zip

    赠送jar包:commons-net-2.2.jar; 赠送原API文档:commons-net-2.2-javadoc.jar; 赠送源代码:commons-net-2.2-sources.jar; 赠送Maven依赖信息文件:commons-net-2.2.pom; 包含翻译后的API文档:commons-...

    apache-commons源码及jar文件

    Apache Commons是一个非常有用的工具包,解决各种实际的通用问题。(附件中提供了该工具包的jar包,及源文件以供研究) BeanUtils Commons-BeanUtils 提供对 Java 反射和自省API的包装 Betwixt Betwixt提供将 ...

    apache commons jar(commons所有的jar包,从官网下载提供.zip

    apache commons jar(commons所有的jar包... apache-sanselan-incubating-0.97-bin bcel-5.2 commons-beanutils-1.9.2-bin commons-chain-1.2-bin commons-cli-1.3.1-bin commons-codec-1.10-bin commons-collections4-4

    commons-lang3-3.4-API文档-中文版.zip

    赠送jar包:commons-lang3-3.4.jar; 赠送原API文档:commons-lang3-3.4-javadoc.jar; 赠送源代码:commons-lang3-3.4-sources.jar; 赠送Maven依赖信息文件:commons-lang3-3.4.pom; 包含翻译后的API文档:...

    apache commons-lang3.4最新官方jar包文档

    apache commons-lang3.4最新官方jar包

    commons-net-2.0.jar TelnetClient包.rar

    TelnetClient包,TelnetClient类根据RFC 854为Telnet协议实现了简单网络虚拟终端(NVT)。它没有实现任何其他Telnet选项,因为它打算在Java程序中使用,以提供对Telnet可访问资源的自动访问。 可以通过首先使用Socket...

    commons-lang3-3.9-API文档-中文版.zip

    赠送jar包:commons-lang3-3.9.jar; 赠送原API文档:commons-lang3-3.9-javadoc.jar; 赠送源代码:commons-lang3-3.9-sources.jar; 赠送Maven依赖信息文件:commons-lang3-3.9.pom; 包含翻译后的API文档:...

    commons-net-3.1-API文档-中英对照版.zip

    赠送jar包:commons-net-3.1.jar; 赠送原API文档:commons-net-3.1-javadoc.jar; 赠送源代码:commons-net-3.1-sources.jar; 包含翻译后的API文档:commons-net-3.1-javadoc-API文档-中文(简体)-英语-对照版....

    Apache commons-io-2.5.jar

    Apache Commons IO 2.5 (要求 JDK 1.6),IOUtils,FileUtils,jar包下载

    commons-compress-1.21-API文档-中文版.zip

    赠送jar包:commons-compress-1.21.jar; 赠送原API文档:commons-compress-1.21-javadoc.jar; 赠送源代码:commons-compress-1.21-sources.jar; 赠送Maven依赖信息文件:commons-compress-1.21.pom; 包含翻译后...

Global site tag (gtag.js) - Google Analytics