远程采集服务器信息,比如说磁盘信息、内存信息。
现介绍java通过telnet执行命令采集服务器信息,比如说执行df、ls、top。
这里在linux环境通过root或者其他用户登录执行解析方式有点出入,下面是代码
/** * Telnet远程会话 * */ public class TelnetSession implements IRemoteSession { private TelnetClient telnet = new TelnetClient("VT220"); private InputStream in; private NodeInfoVO nodeInfoVO; private PrintStream out; private char prompt = '$';// 普通用户结束 /** * * 构造函数 * @param serverBean */ public TelnetSession(NodeInfoVO nodeInfoVO) { try { telnet.connect(nodeInfoVO.getServerIp(), DeviceConstants.TELNET_DEFAULT_PORT); in = telnet.getInputStream(); out = new PrintStream(telnet.getOutputStream()); // 根据root用户设置结束符 this.prompt = nodeInfoVO.getServerUserName().equals("root") ? '#' : '>'; login(nodeInfoVO.getServerUserName(), nodeInfoVO.getServerPassword()); } catch (Exception e) { e.printStackTrace(); } } /** * @return 获取 serverBean属性值 */ public NodeInfoVO getNodeInfoVO() { return nodeInfoVO; } /** * 登录 * * @param user * @param password */ public void login(String user, String password) { readUntil("login:"); write(user); readUntil("assword:"); write(password); readUntil(prompt + ""); } /** * 读取分析结果 * * @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)) { byte[] temp = sb.toString().getBytes("iso8859-1"); return new String(temp, "GBK"); } } ch = (char) in.read(); } } catch (Exception e) { e.printStackTrace(); } return null; } /** * 读取分析结果 * * @param pattern * @return */ public String readResultUntil(String pattern) { BufferedReader inputStream = null; try { // char lastChar = pattern.charAt(pattern.length() - 1); // StringBuffer sb = new StringBuffer(); // Thread.sleep(1000); // final Scanner sc = new Scanner(in, "iso8859-1"); // // while (sc.hasNextLine()) { // String ss=sc.nextLine(); // if(ss.contains("mmc")){ // System.out.println("---------"); // //return null; // } // byte[] temp = ss.toString().getBytes("iso8859-1"); // System.out.println(new String(temp, "GBK")); // } // // sc.close(); inputStream = new BufferedReader(new InputStreamReader(in)); String line = inputStream.readLine(); while (inputStream.ready()) { System.out.println(line); line = inputStream.readLine(); } inputStream.close(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (inputStream != null) inputStream.close(); } catch (IOException 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 execCommand(String command) { try { write(command); return readUntil(prompt + ""); } catch (Exception e) { e.printStackTrace(); } return null; } /** * 关闭连接 */ @Override public void close() { IOUtils.closeQuietly(in); IOUtils.closeQuietly(out); try { telnet.disconnect(); } catch (Exception e) { telnet = null; } finally { telnet = null; } } public static void main(String[] args) { // TelnetSession she = null; // try { // she = new TelnetSession(new ServerBean("10.10.5.183", 23, "comtop", "comtophello")); // System.out.println(she.execCommand("wmic path win32_operatingsystem get TotalVisibleMemorySize," // + "TotalVirtualMemorySize ,FreePhysicalMemory,FreeVirtualMemory")); // } catch (Exception e) { // she.disconnect(); // } finally { // she.disconnect(); // } } }
相关推荐
例如,你可以编写一个Java程序定期通过ssh登录服务器检查运行状态,通过ftp同步远程文件,或者通过telnet进行设备的简单控制。 总的来说,这个资源包为你提供了一个很好的起点,通过学习和理解这些代码,你将能够...
telnet,另一方面,是一种网络协议,允许用户远程登录到另一台计算机上,执行命令或访问服务。在数据采集程序中,telnet可能被用来连接到电力系统设备或服务器,收集实时数据或者控制设备状态。通过telnet,程序可以...
Telnet协议是一种远程终端协议,允许用户通过网络连接到另一台设备并执行命令。在本项目中,STM32F107通过TCP/IP协议栈实现了服务器端的Telnet服务,用户可以通过任意支持Telnet的客户端工具,如Windows命令行的...
- 成功登录后,用户可以通过客户端输入命令,这些命令会被发送到服务器执行。 - 服务器执行命令后,将结果返回给客户端显示。 #### 三、TELNET协议的技术特点 ##### 3.1 协议结构 - TELNET采用客户机/服务器模型。...
客户端允许管理员远程访问设备,执行命令获取信息,或者配置自动化的数据收集任务。此外,客户端还可以集成各种API(应用程序接口)和SDK(软件开发工具包),以实现与设备的深度交互,获取更精细的数据。 系统层面...
- **Telnet程序**:使用Telnet远程登录路由器,可以执行命令获取实时或历史的流量数据。 路由器作为网络数据传输的瓶颈,所有进出局域网的流量都要经过路由器,因此利用路由器进行数据包统计,可以高效地监控和...
- **系统实现**:通过对嵌入式Web服务器的定制和配置,实现了电压数据的实时采集与展示功能。用户可以通过Web界面查看电压变化情况,并通过条形图和颜色变化直观地了解实时电压值。 - **系统测试**:进行了多轮测试...
- **远程数据采集**: 在工业自动化领域,串口服务器可以用于远程采集设备的数据,并将这些数据发送到中央控制中心进行分析和处理。 - **设备联网**: 可以将不具备网络功能的传统设备连接到互联网上,实现远程监控和...
用户可以通过SNMP、Telnet、Web浏览器或者IP Power Pro软件进行网络管理,特别是通过内置的Web服务器功能,可以在任何操作系统平台上通过Web浏览器进行实时状态查询、基本信息管理、参数设置、用户管理和历史资料...
2. **互联网信息查询工具**:Gopher 是一种基于菜单驱动的查询工具,允许用户实时访问互联网上的远程联机信息系统。其他选项如 Listserv 是邮件列表服务,WAIS 是宽领域信息系统,FTP 是文件传输协议。 3. **音频...
2. Telnet是一种菜单驱动的互联网信息查询工具,允许用户实时访问远程联机信息系统。其他选项中,Listserv是邮件列表服务,Gopher是信息检索系统,WAIS是广义信息检索服务,FTP是文件传输协议。 3. 音频文件格式...
二是直接利用路由器内置的流量统计功能,如Show Ip Accounting命令、SNMP协议和Telnet程序,这些工具可以提供准确的流量数据分析。 基于路由器的IP数据包统计是一种高效的数据采集方式。SNMP(简单网络管理协议)...
7. 网络信息资源采集的形式标准:包括资源的组织及利用方式、资源内容覆盖面大小,而不包括查准率、查全率、检索速度和收录范围,这些是评价搜索引擎性能的指标。 8. 元搜索引擎:元搜索引擎整合、调用并优化多个...
在这种情况下,特定的关注点是基于Telnet的隐蔽信道,它通过将隐匿的消息附加在Telnet网络数据包中,然后发送到远程服务器,以此进行秘密通信。 由于键盘输入的任意性,检测这种隐蔽信道变得非常复杂。用户可以随意...
- **串口服务器配对应用**:例如通过一对串口服务器实现远程设备间的通信连接。 - **端口性能及参数**:针对不同型号的RS232/RS485服务器,详细介绍了其端口的电气特性、最大传输距离等。 - **硬件连接**:提供了...
这款服务器由美国B&B公司开发,适用于各种工业自动化、数据采集和远程监控场景。 ESP904的主要特性包括: 1. 强大的适应性:ESP904支持TCP服务器、TCP客户端、UDP以及虚拟COM和配对模式,能够灵活应对不同网络通信...
对于UNIX系统,则通过TELNET协议登录并执行命令获取相关信息。 - **备份文件检查**:定期检查备份文件的存在性、大小和创建时间,确保备份有效。 - **系统日志监控**:利用.NET框架中的`EventLog`对象监测系统日志,...
总的来说,MC3000客户端Wavelink的升级是提升Symbol MC3000数据采集器效能和安全性的重要手段,通过优化的telnet客户端功能,用户可以更高效地执行远程任务,同时享受到更好的用户体验和增强的安全保障。