利用apache commons-net 开源包,使用telnet方式获取AIX主机信息
/***
** QQ:252574345
** MSN:[email protected]
***/
一。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();
}
}
}
相关推荐
因为设备或终端是遍布整个省或市,有的甚至是国外,如何高效的处理问题是当务之急,除了telnet还可以ssh使用crt软件登陆,telnet开启的话比较方便windows自带的cmd命令行下就可以运行。