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()));

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值