util.java_TelnetUtil.java

package com.ailk.ess.webapp2.servermng.net;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.ArrayList;

import java.util.List;

import org.apache.commons.net.telnet.TelnetClient;

public class TelnetUtil {

//telnet客户端对象VT220/VT52

TelnetClient client = new TelnetClient("VT52");

StringBuffer buffer = new StringBuffer();

InputStream inputStream = null; // 输入流,接收服务端的返回信息

OutputStream outputStream = null; // 输出流,向服务端写命令

private static List defaultPromt = new ArrayList();

private static List user = new ArrayList();

private static List pass = new ArrayList();

//默认端口

public static int defaultport = 23;

static {

defaultPromt.add("#");

defaultPromt.add(">");

defaultPromt.add("%");

user.add("ogin:");

pass.add("assword:");

}

/**

* @param hostname

* 服务器IP地址

* @param port

* telnet端口

* @param username

* 用户名

* @param password

* 密码

* @throws Exception

*/

public TelnetUtil(String hostname, int port, String username, String password) throws Exception {

// 连接服务器

conn(hostname, port);

// 获得输入流对象

this.inputStream = this.client.getInputStream();

// 获得输出流对象

this.outputStream = this.client.getOutputStream();

login(username, password);

}

/**

* 关闭连接

*

* @throws Exception

*/

public void close() throws Exception {

this.client.disconnect();

}

/**

* 连接到服务器

*

* @param hostname

* 服务器IP地址

* @param port

* 端口

* @throws Exception

*/

private void conn(String hostname, int port) throws Exception {

this.client.connect(hostname, port);

}

/**

* 登录服务器

*

* @param username

* 用户名

* @param password

* 密码

* @throws Exception

*/

private void login(String username, String password) throws Exception {

sendCommand(username, user);

List temp = new ArrayList();

temp.add(":");

String result = getResult(temp);

if (!(result.trim().endsWith("word:"))) {

throw new Exception("Invalid user:" + username);

}

temp.add("#");

temp.add(">");

temp.add("%");

sendCommand(password, pass);

result = getResult( temp );

if ((result.trim().endsWith("word:"))

|| (result.trim().endsWith("ogin:"))) {

throw new Exception("Invalid username or password:" + username

+ " " + password);

}

}

public void sendCommand(String command) throws Exception {

sendCommand(command, defaultPromt);

}

public String getResult() throws Exception {

return getResult(defaultPromt);

}

/**

* 往服务器输入命令

*

* @param command

* 命令指令

* @param wantedEndString

* @throws Exception

*/

public void sendCommand(String command, List wantedEndString)

throws Exception {

waitForString(wantedEndString);

this.buffer.delete(0, this.buffer.length());

// 输出输入的命令值

// System.out.println(command + "\n");

this.outputStream.write((command + "\n").getBytes());

this.outputStream.flush();

}

public String getResult(List endString) throws Exception {

waitForString(endString);

return this.buffer.toString();

}

private void waitForString(List wantedEndString) throws Exception {

int aword = 0;

boolean matchOne = false;

while (!(matchOne)) {

for (int i = 0; i < wantedEndString.size(); ++i) {

String back = this.buffer.toString().trim();

if ((back.endsWith((String)wantedEndString.get(i))) && (this.inputStream.available() == 0)){

matchOne = true;

}

}

if (matchOne) {

return;

}

aword = this.inputStream.read();

// System.out.print((char) aword);

if (aword < 0) {

throw new Exception("Connection disconnect...");

}

this.buffer.append((char) aword);

}

}

public boolean isClosed() {

return (!(this.client.isConnected()));

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534605.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生活中java继承例子_简单继承例子:java

通用类&#xff0c;来继承出圆和矩形。package circle;public class Geometric {private String color"white";private boolean filled;private java.util.Date dateCreated;public Geometric(){dateCreatednew java.util.Date();}public Geometric(String color,boo…

java技术简介英文_Java技术常见的英文缩写

1、 URL&#xff0c;Uniform Resource Location&#xff0c;统一资源定位符。2、 JDBC&#xff0c;Java DataBase Connectivity&#xff0c;Java数据库连接。3、 JSP&#xff0c;Java Server Pages&#xff0c;Java服务器页面。4、 JVM&#xff0c;Java Virtual Machine&#x…

Java解决空引用_Java 匠人手法 - 优雅的处理空值

原标题&#xff1a;Java 匠人手法 - 优雅的处理空值作者&#xff1a;Lrwin导语在笔者几年的开发经验中&#xff0c;经常看到项目中存在到处空值判断的情况&#xff0c;这些判断&#xff0c;会让人觉得摸不这头绪&#xff0c;它的出现很有可能和当前的业务逻辑并没有关系。但它会…

mysql 尝试读取超过流末尾的_MySql异常:尝试读取超出流末尾的内容

问题详细描述&#xff1a;2020-09-04 11:28:19,576 [DefaultQuartzScheduler_Worker-1] DEBUG MySql.Data.MySqlClient.MySqlException (0x80004005): Fatal error encountered during command execution. ---> MySql.Data.MySqlClient.MySqlException (0x80004005): Fatal …

mysql对称连接什么意思_对称加密与非对称加密的区别是什么

区别&#xff1a;1、对称加密中加密和解密使用的秘钥是同一个&#xff1b;非对称加密中采用两个密钥&#xff0c;一般使用公钥进行加密&#xff0c;私钥进行解密。2、对称加密解密的速度比较快&#xff0c;非对称加密和解密花费的时间长、速度相对较慢。3、对称加密的安全性相对…

php引号变量_下列PHP数据库insert语句中变量前后的点和双引号有什么作用?

这就要从双引号和单引号的作用讲起&#xff1a;双引号里面的字段会经过编译器解释然后再当作HTML代码输出&#xff0c;但是单引号里面的不需要解释&#xff0c;直接输出。例如&#xff1a;$abcI love u;echo $abc //结果是:I love uecho $abc //结果是:$abcecho "$abc&quo…

php excel 设置常规_php实现的操作excel类详解

本文实例讲述了php实现的操作excel类。分享给大家供大家参考&#xff0c;具体如下&#xff1a;class Excel{static $instancenull;private $excelnull;private $workbooknull;private $workbookaddnull;private $worksheetnull;private $worksheetaddnull;private $sheetnum1;p…

php析构函数使用,php析构函数__destruct()使用方法及实例讲解

通过上一篇文章《php 构造函数__construct()使用分析》的讲解&#xff0c;我们已经知道了什么叫构造方法。那么与构造方法对应的就是析构方法。析构方法允许在销毁一个类之前执行的一些操作或完成一些功能&#xff0c;比如说关闭文件、释放结果集等。析构方法是PHP5才引进的新内…

ubuntu创建php文件,ubuntu系统创建桌面快捷方式的方法

在ubuntu系统中&#xff0c;自己安装的程序往往没有创建桌面快捷方式&#xff0c;每次都通过终端然后输入绝对路去径执行命令比较繁琐&#xff0c;其实可以像windows那样自己在桌面程序创建程序的快捷方式&#xff0c;这样方便了每次的启动。这里以Navicat为例说明一下在linux(…

php设计模式及案例分析,一个案例来认识PHP经典设计模式 | 张先生博客

/*** 单例模式*/class Site{//属性public $siteName;//本类的静态实例public static $instance null;//禁用掉构造器private function __construct($siteName){$this->siteName $siteName;}//获取本类唯一实例public static function getInstance($siteNme 默认siteName值…

php如何加密图片,php实现图片加密解密,支持设置密码 (两年后版本!)

* by hello* 84587470** php 文件加密类&#xff0c;支持设置密码&#xff0c;图片&#xff0c;文件都可以&#xff01;情侣们的福音&#xff01;&#xff01;&#xff01;**/$from C:\Users\Administrator\Desktop\t\test.png;$to C:\Users\Administrator\Desktop\t\\;//加密…

php面向对象编程代码怎么写,php面向对象编程(一)

类与对象关系&#xff1a;类就像一个人类的群体 我们从类中实例化一个对象 就像是制定一个人。面向对象程序的单位就是对象&#xff0c;但对象又是通过类的实例化出来的&#xff0c;所以我们首先要做的就是如何来声明类&#xff0c; 做出来一个类很容易。类的格式class 类名 { …

雅马哈php mt7,雅马哈专业录音室监听耳机 HPH-MT7 正式发售!

从 NS-10M 监听音箱到 MSP 系列和 HS 系列&#xff0c;雅马哈始终秉持忠实的设计理念&#xff0c;聚焦声学精度&#xff0c;为音频专家提供出色的平台&#xff0c;构建并成就他们专属的专业之声。MT7录音室监听耳机承袭了这一基本研发理念,重现最为精细的声音&#xff0c;力求满…

php 支付签名验证失败,choosewxpay fail解决,微信支付签名验证错误解决

require_once("config.php"); //这个文件原来写过的博客有http://jipq1016.com/display.php?id9//统一下单$openid$_POST[openid];$arr[appid]$appid; //商户appid$arr[mch_id]$mch_id; //微信支付…

趣学java,编程趣学习app

编程趣学习在这里会有多种编程语言是可以去学习的Java或者是c&#xff0c;入门级的海鸥就是更加有难度的都是可以选择一个自己可以去学习的课程&#xff0c;跟着讲师一同开始及逆行语言基础知识的学习后面大家就是根据自己的的课后作业完成&#xff0c;去自己调试新的程序。编程…

cgi php脚本运行超时间,php超时 - php-cgi调用外部程序超时,但php在命令行模式下能完整运行外部程序...

运行环境为Ubuntu14.04php脚本无论用Apache还是nginx都会在R语言运行一半时终止运行(在需要等待运行3~5秒时的步骤停止)但用php在命令行模式php -f result.php却能完整运行。请问是否能通过修改php配置&#xff0c;解决这个问题回复内容&#xff1a;运行环境为Ubuntu14.04php脚…

oracle无法分区,oracle已存在的表添加新分区的方法

现在有一张表如下&#xff1a;create table WRITE_USER(area_code VARCHAR2(8),user_no VARCHAR2(20),user_name VARCHAR2(100),address VARCHAR2(100),mon NUMBER(6),mon_sn NUM…

oracle常用表查询,ORACLE EBS常用表及查询语句(最终整理版)

select * from ar_batches_all 事务处理批select * from ra_customer_trx_all 发票头select * from ra_customer_trx_lines_all 发票行select * from ra_cust_trx_line_gl_dist_all 发票分配select * from ar_cash_receipts_all 收…

aix升级新安装oracle,安装Oracle 11gR2 AIX 5.3 升级到TL11的一些小记录

Dep-app 需要locdevices.usbif.08025002.rtersct.compat.basic.sp打5300-11-00-0943时需要devices.usbif.08025002.rte 5.3.11.0 重启可以 或 删除 devices.usbif.08025002.rte 5.3.7.7打5300-11-04-1015时需要bos.sysmgt.sysbr 5.3.11.0 5.3.11.3bos.sysmgt.sysbr 需要bos…

oracle连续状态相同,数据库共有三种状态:quiesce、resrict、suspend

数据库共有三种状态&#xff1a;quiesce、resrict、suspend一、quiesce模式首先来说说数据库的静默状态静默状态是指数据库中只存在sys和system用户建立的活动会话。只有dba能继续操作数据库。此状态下可以进行一些在非静默状态下执行可能存在不安全因素的特殊操作。对于必须持…