使用apache的TelnetClient实现java向telnet服务器发送命令并显示数据(解决乱码问题)
2014-05-27 00:00
1671 查看
package cn.keyidea.telnet; import java.io.InputStream; import java.io.PrintStream; import org.apache.commons.net.telnet.TelnetClient; public class TelnetUtil { private TelnetClient telnet = new TelnetClient("VT220");// telnet有VT100 VT52 // VT220 VTNT // ANSI等协议。 private InputStream in; private PrintStream out; private static final String DEFAULT_AIX_PROMPT = "C:\\Users\\Administrator>"; // telnet 端口 private String port; // 用户名 private String user; // 密码 private String password; // IP 地址 private String ip; // 缺省端口 private static final int DEFAULT_TELNET_PORT = 23; public TelnetUtil(String ip, String user, String password) { this.ip = ip; this.port = String.valueOf(TelnetUtil.DEFAULT_TELNET_PORT); this.user = user; this.password = password; } public TelnetUtil(String ip, String port, String user, String password) { this.ip = ip; this.port = port; this.user = user; this.password = password; } /** * @return boolean 连接成功返回true,否则返回false */ private boolean connect() { boolean isConnect = true; try { telnet.connect(ip, Integer.parseInt(port)); in = telnet.getInputStream(); out = new PrintStream(telnet.getOutputStream()); /** Log the user on* */ readUntil("login: "); write(user); readUntil("password: "); write(password); /** Advance to a prompt */ readUntil(DEFAULT_AIX_PROMPT); } catch (Exception e) { isConnect = false; e.printStackTrace(); return isConnect; } return isConnect; } public void su(String user, String password) { try { write("su" + " - " + user); readUntil("Password:"); write(password); readUntil(DEFAULT_AIX_PROMPT); } catch (Exception e) { e.printStackTrace(); } } public String readUntil(String pattern) { try { char lastChar = pattern.charAt(pattern.length() - 1); StringBuffer sb = new StringBuffer(); char ch = (char) in.read(); while (true) { // System.out.print(ch);// ---需要注释掉 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; } public void write(String value) { try { out.println(value); out.flush(); // System.out.println(value);// ---需要注释掉 } catch (Exception e) { e.printStackTrace(); } } public String sendCommand(String command) { try { write(command); return readUntil(DEFAULT_AIX_PROMPT); } catch (Exception e) { e.printStackTrace(); } return null; } private void disconnect() { try { telnet.disconnect(); } catch (Exception e) { e.printStackTrace(); } } private String getIPConfig() { this.connect(); String result = this.sendCommand("ipconfig"); this.disconnect(); // 去除命令提示符 return result.substring(0, result.indexOf(DEFAULT_AIX_PROMPT)); } private String getDir() { this.connect(); String result = this.sendCommand("dir"); this.disconnect(); // 去除命令提示符 return result.substring(0, result.indexOf(DEFAULT_AIX_PROMPT)); } public static void main(String[] args) { TelnetUtil telnet = new TelnetUtil("127.0.0.1", "administrator", "1"); System.out.println(telnet.getDir()); System.out.println(telnet.getIPConfig()); } }
相关文章推荐
- Java使用javax.mail发送邮件 解决收件人、发件人名字乱码问题
- C++编程笔记:使用WinHTTP实现HTTP访问(解决接收UTF8数据乱码问题)
- apache telnetclient 登录windows返回数据乱码问题
- android客户端通过Get方式提交参数给服务器,使用URL和HttpURLConnection实现,以及乱码问题解决
- 使用Apache 的 FTP Client获取FTP服务器上的文件列表FTP response 421 received.Server closed connection问题的解决
- 有关于在myeclipse中java向服务器发送请求返回数据有中文乱码的一种情况及解决
- 使用Apache 的 FTP Client获取FTP服务器上的文件列表FTP response 421 received.Server closed connection问题的解决
- mysql导入导出数据中文乱码解决方法小结(1、navicat导入问题已解决,创建连接后修改连接属性,选择高级->将使用Mysql字符集复选框去掉,下拉框选择GBK->导入sql文件OK;2、phpmyadmin显示乱码的问题也解决,两步:1.将sql文件以utf8的字符集编码另存,2.将文件中sql语句中的字段字符集编码改成utf8,导入OK)
- PHP使用之上传文件到本地服务器(实现上传文件后页面内容不动、解决上传文件命名乱码后缀问题)
- java如何发送邮件以及使用Velocity模板解决模板文件中文乱码的问题
- Java使用Velocity模板发送HTML格式邮件并解决中文乱码问题
- 解决问题之道--使用Java实现数据的分组求和
- Java 使用 Velocity 发送邮件中文内容乱码问题的解决办法
- jni使用openssl AES256位加解密(cbc模式),匹配java后端服务器算法,解决末尾乱码问题
- android客户端通过Get方式提交参数给服务器,使用URL和HttpURLConnection实现,以及乱码问题解决
- C++编程笔记:使用WinHTTP实现HTTP访问(解决接收UTF8数据乱码问题)
- Java:Poperties Editor 插件------自动解决ApplicationResources.properties中汉字显示乱码问题
- JTA(java telnet/ssh client)不能telnet/ssh远程机器问题与解决
- 取从textarea中存到MYSQL的数据以原格式显示问题以及解决MySQL日期处理和标签的使用
- Java:Poperties Editor 插件------自动解决ApplicationResources.properties中汉字显示乱码问题