www.pudn.com > TestToolsProject.rar > TelnetSource.java, change:2014-09-20,size:1913b


package com.mervyn.testsource; 
 
 
import java.io.InputStream; 
import java.io.PrintStream; 
 
import org.apache.commons.net.telnet.TelnetClient; 
 
public class TelnetSource { 
	private TelnetClient telnet = new TelnetClient(); 
	private InputStream in; 
	private PrintStream out; 
	private char prompt = '$';// 普通用户结束 
	 
 
	public TelnetSource(String ip, int port, String user, String password) { 
		try { 
			telnet.connect(ip, port); 
			in = telnet.getInputStream(); 
			out = new PrintStream(telnet.getOutputStream()); 
			// 根据root用户设置结束符 
			this.prompt = user.equals("root") ? '#' : '>'; 
			login(user, password); 
		} catch (Exception e) { 
			e.printStackTrace(); 
		} 
	} 
 
	/** 
	 * 登录 
	 */ 
	public void login(String user, String password) { 
		write(user); 
		write(password); 
		readUntil(prompt + ""); 
	} 
 
	/** 
	 * 读取分析结果 
	 */ 
	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)) { 
						return sb.toString(); 
					} 
				} 
				ch = (char) in.read(); 
				//System.out.print(ch); 
			} 
		} catch (Exception e) { 
			e.printStackTrace(); 
		} 
		return null; 
	} 
 
	/** 
	 * 写操作 
	 */ 
	public void write(String value) { 
		try { 
			out.println(value); 
			out.flush(); 
		} catch (Exception e) { 
			e.printStackTrace(); 
		} 
	} 
 
	/** 
	 * 向目标发送命令字符串 
	 */ 
	public String sendCommand(String command) { 
		try { 
			write(command); 
			return readUntil(prompt + ""); 
		} catch (Exception e) { 
			e.printStackTrace(); 
		} 
		return null; 
	} 
 
	/** 
	 * 关闭连接 
	 */ 
	public void disconnect() { 
		try { 
			telnet.disconnect(); 
		} catch (Exception e) { 
			e.printStackTrace(); 
		} 
	} 
}