利用apache commons-net 开源包,使用telnet方式获取AIX主机信息-阿里云开发者社区

开发者社区> 风月无边> 正文

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

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
asp.net采用OLEDB方式导入Excel数据时提示:未在本地计算机上注册"Microsoft.Jet.OLEDB.4.0" 提供程序"
笔者在项目中做做了一个从Excel表格中导入数据的模块、大体上asp.net项目中导入Excel大体分成三类: 1)采用c#内置方案System.Data.OleDb(限制较小, 通用) 2)采用Excel的COM组件(会有版本问题) 3)采用伪Excel文件、即使用文本流的方式根据需求自己定义数据格式。
1138 0
我的mqtt协议和emqttd开源项目个人理解(18) - 一个客户端sub很多主题和数据,出现宕机?使用本地共享订阅解决!
我的mqtt协议和emqttd开源项目个人理解(18) - 一个客户端sub很多主题和数据,出现宕机?使用本地共享订阅解决!
10 0
.net Remoting(3)——激活,激活方式
在生成远程对象时,创建和初始化新对象就是激活。远程处理系统须始终了解所需的激活类型才能将对象设置为可供客户端使用。激活有两种方式:服务器激活和客户端激活   服务器激活 服务器激活的对象是生存期直接受服务器直接控制的对象。
594 0
如何仅使用内部链接策略来提高搜索排名
如何仅使用内部链接策略来提高搜索排名 网站架构修改的三个例子,在数字营销中提供了大量的SEO收益。 链接,即使在网站内,也显示内容之间的关系。它们在页面之间传递价值和重要性。更重要的是,内部链接定义了您网站的结构。
1432 0
开源数据同步神器——canal
作为使用最广泛的数据库,如何将mysql的数据与中间件的数据进行同步,既能确保数据的一致性、及时性,也能做到代码无侵入的方式呢?如果有这样的一个需求,数据修改后,需要及时的将mysql中的数据更新到elasticsearch,我们会怎么进行实现呢?
9343 0
Linux平台下QT中蓝牙的使用
检查你的Qt安装的时候是否选择了bluez的支持。 如果你用的Linux系统默认Qt很可能没有安装,针对你的Linux版本,上网找找具体怎么添加bluez模块的支持。
1483 0
+关注
风月无边
java,架构方面专家
367
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载