远程采集服务器信息,比如说磁盘信息、内存信息。
现介绍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-telnet连接远程服务器并执行shell命令 具体代码 java-telnet
这是一个采用fibjs编写的telnet客户端,具有连接、登录及远程执行命令等功能
java 实现telnet服务器执行脚本
java源代码,通过telnet方式连接服务器,可以设置是否记录日志等信息。经过稍微改动可以实现类似crt软件的功能。
c# telnet远程服务器 发送指令。可以远程linux、Windows发送 dos命令
PsExec 最强大的功能之一是在远程系统和远程支持工具(如 IpConfig)中启动交互式命令提示窗口,以便显示无法通过其他方式显示的有关远程系统的信息。 注意:某些反病毒扫描程序会报告其中的一个或多个工具感染了...
FinalShell是一款功能强大的远程终端软件,它可以让用户通过SSH、Telnet或者RDP等协议连接到远程服务器或设备,实现远程控制和管理。FinalShell支持多标签页、会话管理、命令自动补全、命令批量执行等功能,用户可以...
离线安装telnet,里面有执行命令
telnet命令测试SMTP服务器
用于自动telnet登录到设备,并执行一些自定义命令 并且输出日志导窗口和日志文件中,日志文件保存在dist下,以 ip地址命名的。
交换机的telnet远程登录配置。1) 掌握交换机命令行各种操作模式的区别,以及模式之间的切换 2) 掌握交换机的全局基本配置 3) 掌握交换机端口的常用基本配置参数 4) 查看交换机系统和配置信息和当前交换机的工作状态
使用批处理实现telnet自动登陆并执行ping命令
实现远程控制的具体步骤,包括远程桌面连接和远程桌面连接控制的详细步骤。
通过telent.jar 连接windows 执行远程windows命令.
Telnet 命令允许您与使用 Telnet 协议的远程计算机通讯。运行 Telnet 时可不使用参数,以便输入由 Telnet 提示符 (Microsoft Telnet>) 表明的 Telnet 上下文。可从 Telnet 提示符下,使用 Telnet 命令管理运行 ...
华为路由器Telnet配置详细命令,适合新手学习!
linux下telnet远程管理程序,包括客户端和服务端程序,客户端发送命令,服务端执行返回结果给客户端。
telnet.exe是一款计算机中一个远程登录软件,通过它你可以进行远程登录,而且可以填写命令控制计算机,其中有两个版本适合windows系统,该程序默认存储在C:\windows\system32文件夹,如有需要欢迎下载使用。
新建Packet Tracer拓扑图 配置交换机管理ip地址 Switch(config)# int vlan 1 Switch(config-if)# ip address **IP** **submask*** ...Switch(config)# line vty 0 4 Switch(config-line)# password 123456 ...
arm版本麒麟v10 telnet命令安装包