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

简介: 一。AIX简介   AIX全名为Advanced Interactive Executive,俗称“An IBM uniX”或“Advanced IBM uniX”。 作为综合评价第一的unix操作系统(D.H. Brown咨询公司,1998年 ),AIX是真正的第二代unix,具有性能卓越、易于使用、扩充性强、适合企业关键应用等众多特点。 支持300种以上的IBM软件和超过13000

一。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主机信息的采集

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

 

  1. package test.collector.telnet;
  2. import java.io.InputStream;
  3. import java.io.PrintStream;
  4. import org.apache.commons.net.telnet.TelnetClient;
  5. /**
  6.  * 利用apache net 开源包,使用telnet方式获取AIX主机信息
  7.  * 
  8.  * @author zhaoyl
  9.  * @date 20008.7.21
  10.  * @version 1.2
  11.  */
  12. public class NetTelnet {
  13.     // Telnet对象
  14.     private TelnetClient telnet = new TelnetClient();
  15.     private InputStream in;
  16.     private PrintStream out;
  17.     // 提示符。具体请telnet到AIX主机查看
  18.     private char prompt = '#';
  19.     // telnet端口
  20.     private String port;
  21.     // 用户
  22.     private String user;
  23.     // 密码
  24.     private String password;
  25.     // IP地址
  26.     private String ip;
  27.     public NetTelnet() {
  28.         try {
  29.             // AIX主机IP
  30.             this.ip = "10.1.2.222";
  31.             this.password = "loeisdke";
  32.             this.user = "whdiwpasdq232sd2323";
  33.             this.port = "23";
  34.             telnet.connect(ip, Integer.parseInt(port));
  35.             in = telnet.getInputStream();
  36.             out = new PrintStream(telnet.getOutputStream());
  37.             // 登录
  38.             readUntil("login: ");
  39.             write(user);
  40.             readUntil("Password: ");
  41.             write(password);
  42.             readUntil(prompt + " ");
  43.         } catch (Exception e) {
  44.             e.printStackTrace();
  45.         }
  46.     }
  47.     /**
  48.      * 读取分析结果
  49.      * 
  50.      * @param pattern
  51.      * @return
  52.      */
  53.     public String readUntil(String pattern) {
  54.         try {
  55.             char lastChar = pattern.charAt(pattern.length() - 1);
  56.             StringBuffer sb = new StringBuffer();
  57.             char ch = (char) in.read();
  58.             while (true) {
  59.                 sb.append(ch);
  60.                 if (ch == lastChar) {
  61.                     if (sb.toString().endsWith(pattern)) {
  62.                         return sb.toString();
  63.                     }
  64.                 }
  65.                 ch = (char) in.read();
  66.             }
  67.         } catch (Exception e) {
  68.             e.printStackTrace();
  69.         }
  70.         return null;
  71.     }
  72.     /**
  73.      * 写
  74.      * 
  75.      * @param value
  76.      */
  77.     public void write(String value) {
  78.         try {
  79.             out.println(value);
  80.             out.flush();
  81.         } catch (Exception e) {
  82.             e.printStackTrace();
  83.         }
  84.     }
  85.     /**
  86.      * 向目标发送命令字符串
  87.      * 
  88.      * @param command
  89.      * @return
  90.      */
  91.     public String sendCommand(String command) {
  92.         try {
  93.             write(command);
  94.             return readUntil(prompt + " ");
  95.         } catch (Exception e) {
  96.             e.printStackTrace();
  97.         }
  98.         return null;
  99.     }
  100.     /**
  101.      * 关闭连接
  102.      * 
  103.      */
  104.     public void disconnect() {
  105.         try {
  106.             telnet.disconnect();
  107.         } catch (Exception e) {
  108.             e.printStackTrace();
  109.         }
  110.     }
  111.     public static void main(String[] args) {
  112.         try {
  113.             NetTelnet telnet = new NetTelnet();
  114.             // 通过aix的命令“查找主机名称”获取数据
  115.             // 命令是 "hostname"
  116.             // 不熟悉命令的参考<<AIX网络管理手册>>
  117.             String result = telnet.sendCommand("hostname");
  118.             System.out.println(result);
  119.             // 最后一定要关闭
  120.             telnet.disconnect();
  121.         } catch (Exception e) {
  122.             e.printStackTrace();
  123.         }
  124.     }
  125. }

 

相关文章
|
4月前
|
消息中间件 物联网 网络安全
MQTT常见问题之调用.net sdk 报“不知道这样的主机”如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
4月前
|
消息中间件 Kafka Apache
Apache Flink 是一个开源的分布式流处理框架
Apache Flink 是一个开源的分布式流处理框架
759 5
|
6天前
|
API
【Azure Key Vault】.NET 代码如何访问中国区的Key Vault中的机密信息(Get/Set Secret)
【Azure Key Vault】.NET 代码如何访问中国区的Key Vault中的机密信息(Get/Set Secret)
|
17天前
|
人工智能 文字识别
通义语音AI技术问题之LCB-net模型对幻灯片中文本信息的使用如何解决
通义语音AI技术问题之LCB-net模型对幻灯片中文本信息的使用如何解决
12 0
|
3月前
|
开发框架 前端开发 .NET
LIMS(实验室)信息管理系统源码、有哪些应用领域?采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码
集成于VS 2019,EXT.NET前端和ASP.NET后端,搭配MSSQL 2018数据库。系统覆盖样品管理、数据分析、报表和项目管理等实验室全流程。应用广泛,包括生产质检(如石化、制药)、环保监测、试验研究等领域。随着技术发展,现代LIMS还融合了临床、电子实验室笔记本和SaaS等功能,以满足复杂多样的实验室管理需求。
57 3
LIMS(实验室)信息管理系统源码、有哪些应用领域?采用C# ASP.NET dotnet 3.5 开发的一套实验室信息系统源码
|
3月前
|
网络协议 Java 程序员
TCP/IP协议栈是网络通信基础,Java的`java.net`包提供工具,使开发者能利用TCP/IP创建网络应用
【6月更文挑战第23天】 **TCP/IP协议栈是网络通信基础,它包含应用层(HTTP, FTP等)、传输层(TCP, UDP)、网络层(IP)、数据链路层(帧, MAC地址)和物理层(硬件信号)。Java的`java.net`包提供工具,使开发者能利用TCP/IP创建网络应用,如Socket和ServerSocket用于客户端和服务器通信。**
45 3
|
4月前
|
Kubernetes Cloud Native API
欢迎报名 Apache Seata (incubating) 开源之夏
Apache Seata (incubating) 邀请学生参加 2024 年开源之夏活动,报名时间为 4 月 30 日至 6 月 3 日。该项目旨在培养分布式事务领域的开发者,参与者将远程协作并有机会获得奖金。
1308 14
|
4月前
/etc/xinetd.d/telnet 配置信息说明
【5月更文挑战第27天】/etc/xinetd.d/telnet 配置信息说明
64 0
|
4月前
|
JSON 编解码 Go
Golang深入浅出之-HTTP客户端编程:使用net/http包发起请求
【4月更文挑战第25天】Go语言`net/http`包提供HTTP客户端和服务器功能,简化高性能网络应用开发。本文探讨如何发起HTTP请求,常见问题及解决策略。示例展示GET和POST请求的实现。注意响应体关闭、错误处理、内容类型设置、超时管理和并发控制。最佳实践包括重用`http.Client`,使用`context.Context`,处理JSON以及记录错误日志。通过实践这些技巧,提升HTTP编程技能。
53 1
|
4月前
|
Go 开发者
Golang深入浅出之-HTTP客户端编程:使用net/http包发起请求
【4月更文挑战第24天】Go语言的`net/http`包在HTTP客户端编程中扮演重要角色,但使用时需注意几个常见问题:1) 检查HTTP状态码以确保请求成功;2) 记得关闭响应体以防止资源泄漏;3) 设置超时限制,避免长时间等待;4) 根据需求处理重定向。理解这些细节能提升HTTP客户端编程的效率和质量。
48 1

推荐镜像

更多
下一篇
云函数