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

ISEESTARS 2008-07-25

/***

** 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;

/**

*利用apachenet开源包,使用telnet方式获取AIX主机信息

*@authorzhaoyl

*@date20008.7.21

*@version1.2

*/

public class NetTelnet {

 //Telnet对象

privateTelnetClienttelnet=newTelnetClient();

 private InputStream in;

 private PrintStream out;

//提示符。具体请telnet到AIX主机查看

privatecharprompt='#';

//telnet端口

privateStringport;

//用户

privateStringuser;

//密码

privateStringpassword;

//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=newPrintStream(telnet.getOutputStream());

//登录

readUntil("login:");

write(user);

readUntil("Password:");

write(password);

readUntil(prompt+"");

}catch(Exceptione){

e.printStackTrace();

}

 }

 /**

*读取分析结果

*@parampattern

*@return

*/

publicStringreadUntil(Stringpattern){

try{

charlastChar=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)){

returnsb.toString();

}

}

ch=(char)in.read();

}

}catch(Exceptione){

e.printStackTrace();

}

returnnull;

 }

 /**

*写

*@paramvalue

*/

publicvoidwrite(Stringvalue){

try{

out.println(value);

   out.flush();

  } catch (Exception e) {

e.printStackTrace();

}

 }

    /**

*向目标发送命令字符串

*@paramcommand

*@return

*/

publicStringsendCommand(Stringcommand){

try{

write(command);

returnreadUntil(prompt+"");

}catch(Exceptione){

e.printStackTrace();

}

returnnull;

}

/**

*关闭连接

*

*/

publicvoiddisconnect(){

try{

telnet.disconnect();

}catch(Exceptione){

e.printStackTrace();

}

 }

 public static void main(String[] args) {

try{

NetTelnettelnet=newNetTelnet();

//通过aix的命令“查找主机名称”获取数据

//命令是"hostname"

//不熟悉命令的参考<<AIX网络管理手册>>

Stringresult=telnet.sendCommand("hostname");

System.out.println(result);

//最后一定要关闭

telnet.disconnect();

}catch(Exceptione){

e.printStackTrace();

}

}

}

相关推荐