首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 开源软件 >

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

2012-10-27 
利用apache commons-net 开源包,使用telnet方式获取AIX主机信息/***** QQ:252574345** MSN:lele_love_lomb

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

热点排行