利用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. }

 

相关文章
|
2月前
|
存储 运维 Cloud Native
Apache Doris 与 ClickHouse:运维与开源闭源对比
Doris 与 ClickHouse 各有优势,但在运维效率、集群自动化能力、故障恢复机制以及开源治理模型方面,Doris 展现出了更成熟、更开放、更面向云原生架构的产品能力。对于希望构建可控、弹性、高可用分析平台的团队而言,Doris 提供了一个更具确定性和长期价值的选择。而 ClickHouse 仍是极具性能优势的分析引擎,但其闭源方向的转变可能需要用户在技术与商业之间做出更谨慎的权衡。
365 9
Apache Doris 与 ClickHouse:运维与开源闭源对比
|
2月前
|
消息中间件 人工智能 Apache
2025 OSCAR丨与创新者同频!Apache RocketMQ 邀您共赴开源之约
10 月 28 日,阿里云高级技术专家周礼分享如何基于 Apache RocketMQ 新特性构建异步化 Multi-Agent 系统。
162 21
|
4月前
|
Java Linux Apache
Apache NetBeans 27 (macOS, Linux, Windows) - Java 等多语言开源跨平台 IDE
Apache NetBeans 27 (macOS, Linux, Windows) - Java 等多语言开源跨平台 IDE
295 5
Apache NetBeans 27 (macOS, Linux, Windows) - Java 等多语言开源跨平台 IDE
|
9月前
|
Shell 网络安全 C#
一款 .NET 开源、功能强大的远程连接管理工具,支持 RDP、VNC、SSH 等多种主流协议!
一款 .NET 开源、功能强大的远程连接管理工具,支持 RDP、VNC、SSH 等多种主流协议!
298 4
|
6月前
|
消息中间件 Apache 双11
Apache RocketMQ + “太乙” = 开源贡献新体验
Apache RocketMQ 是 Apache 顶级项目,源于阿里巴巴,历经多年双十一考验。RocketMQ 联合“太乙”平台启动开源竞赛,提供贡献价值评价与奖金激励(最高 5000 元),助力开发者成为社区核心成员。竞赛包含详尽教程与自动搭建环境,促进技术生态繁荣,推动分布式消息处理技术发展。欢迎加入,共创开源未来!
244 1
|
11月前
|
消息中间件 存储 Apache
恭喜 Apache RocketMQ、Apache Seata 荣获 2024 开源创新榜单“年度开源项目”
近日,以“新纪天工、开物焕彩——致敬开源的力量”为活动主题的“重大科技成就发布会(首场)”在国家科技传播中心成功举办,并隆重揭晓了 2024 开源创新榜单,旨在致敬中国开源力量,传播推广开源科技成就,营造中国开源创新生态。2024 年开源创新榜单由中国科协科学技术传播中心、中国计算机学会、中国通信学会、中国科学院软件研究所共同主办,中国开发者社区承办,以王怀民院士为首组建评审委员会,进行研讨评审,面向中国开源行业领域,遴选具有创新性、贡献度和影响力的开源项目、社区、应用场景与开源事件。在评审出的 10 个年度开源项目中,Apache RocketMQ、Apache Seata 成功入选。
399 102
|
9月前
|
Apache 数据库 开发者
喜报!Apache Seata (incubating) 荣获 2024 开源创新榜单“年度开源项目”!
12月18日,Apache Seata 在北京举行的2024开源创新榜单发布活动中荣获“年度开源项目”。该榜单由中国科协等权威机构主办,经过严格评审,Seata 凭借卓越的技术实力和社区贡献脱颖而出。Seata 是一款分布式事务解决方案,自2019年开源以来,已在GitHub收获超25.4k star,广泛应用于各领域企业,支持主流数据库和RPC框架。未来,Seata 将继续推动技术进步,共建开放、包容的社区生态。
喜报!Apache Seata (incubating) 荣获 2024 开源创新榜单“年度开源项目”!
|
9月前
|
消息中间件 存储 Apache
恭喜 Apache RocketMQ 荣获 2024 开源创新榜单“年度开源项目”
恭喜 Apache RocketMQ 荣获 2024 开源创新榜单“年度开源项目”
219 1
|
10月前
|
人工智能 自然语言处理 数据中心
D1net阅闻|DeepSeek开源放大招:FlashMLA让H800算力狂飙!曝光低成本秘笈
D1net阅闻|DeepSeek开源放大招:FlashMLA让H800算力狂飙!曝光低成本秘笈
|
11月前
|
开发框架 前端开发 .NET
一个适用于 .NET 的开源整洁架构项目模板
一个适用于 .NET 的开源整洁架构项目模板
208 26

推荐镜像

更多