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