Telnet-Client слишком истощен, гораздо больше, чем SSH-клиент.
org.apache.commons.net.telnet.telnetclien-использовал пакет Commons-Net Apache, Commons-Net-3.0.1-bin.zip.
Кода -копия выглядит следующим образом:
пакет org.sl.util;
Import org.apache.commons.net.telnet.telnetClient;
импортировать java.io.*;
Импорт java.nio.bytebuffer;
открытый класс Telnetutil {
String charset = null;
byte [] buff = new Byte [2048];
TelnetClient telnetClient = new TelnetClient ();
BufferedReader TelnetReader = null;
BufferedWriter TelnetWirter = null;
InputStream telnetin = null;
OutputStream telnetOut = null;
public telnetutil () {
telnetClient = new TelnetClient ();
}
/**
* Подключиться к серверу
* @param ip
* @param port
* @Throws UnsUpportEncodingException
* @Throws ioException
*/
public void Connect (String ip, int port) бросает UnsupportedEncodingException, ioException {
telnetClient.connect (ip, port);
setioStream ();
}
/**
* Подключиться к серверу
* @param ip
* @Throws UnsUpportEncodingException
* @Throws ioException
*/
public void Connect (String IP) бросает UnsupportedEncodingException, ioException {
telnetClient.connect (ip);
setioStream ();
}
void setiostream () бросает UnsupportedEncodingException {
telnetin = telnetClient.getInputStream ();
telnetout = telnetClient.getOutputStream ();
if (null == charset) {
telnetReader = new BufferedReader (New InputStreamReader (telnetin));
telnetwirter = new BufferedWriter (новый outputstreamwriter (telnetout));
}еще{
telnetReader = new BufferedReader (New InputStreamReader (telnetin, charset));
telnetwirter = new BufferedWriter (новый outputstreamwriter (telnetout, charset));
}
}
/**
* Авторизоваться
* @param пользователь
* @param passwd
* @return, является ли вход в систему успешным.
* @Throws ioException
*/
public boolean login (String user, String passwd) бросает ioException {
String read = readstring ();
for (int i = 0;; i ++) {
if (-1 == read.indexof ("login")) {
read = readstring ();
}еще{
перерыв;
}
}
wriseText (пользователь);
read = readstring ();
for (int i = 0;; i ++) {
if (-1 == read.indexof ("пароль")) {
read = readstring ();
}еще{
перерыв;
}
}
WriteText (Passwd);
для(;;){
read = readstring ();
//System.out.println("last:"+read);
if (-1! = Read.indexof ("last")) {
вернуть истину;
} else if (-1! = read.indexof ("неверно")) {
вернуть ложь;
}
}
}
/**
* Это метод испытания, просто напишите его случайно.
* @Throws ioException
*/
public void show () бросает ioException {
// System.out.println (readstring ());
// System.out.println (readstring ());
// bytebuffer tmp = bytebuffer.allocate (1024);
// byte [] buff = new Byte [1024];
// while (telnetin.available ()> 0) {
// int readlen = readbytes (Buff, 0,1024);
// tmp.put (buff, 0, readlen);
//}
// system.out.println (new String (tmp.array ()));
System.out.println ("1"+readstring ());
System.out.println ("2"+readstring ());
System.out.println ("3"+readstring ());
WriteText ("root");
System.out.println ("4" + readstring ());
WriteText ("123456");
System.out.println ("5"+readstring ());
// system.out.println ("6"+readstring ());
// system.out.println ("7"+readstring ());
}
public int readbytes (byte [] buff, int offset, int len) бросает ioexception {
return telnetin.read (Buff, Offset, Len);
}
/**
* Читать строку <br/>
* эквивалентно преобразованию readbyte () в строку
* @возвращаться
* @Throws ioException
*/
public String readstring () бросает ioException {
int readlen = readbytes (this.buff, 0, this.buff.length);
if (0 <readlen)
вернуть новую строку (Buff, 0, readlen) .trim ();
еще
возвращаться "";
}
/**
* Прочитайте линию <br/>
* Если сервер и клиент не являются одной и той же операционной системой, этот метод может не рассчитать строку.
* @возвращаться
* @Throws ioException
*/
public String readline () бросает ioException {
String read = telnetReader.readline ();
return null == читать? "": read.trim ();
}
public void writsbytes (byte [] buff, int offset, int len) бросает ioexception {
telnetout.write (Buff, Offset, Len);
}
/**
* Написать строку на сервер
* @param текст
* @Throws ioException
*/
public void writeText (строка текста) бросает ioException {
telnetwirter.write (текст);
telnetwirter.write ('/r');
telnetwirter.write ('/n');
telnetwirter.flush ();
}
/**
* Выполнить команду и вернуть результат <br/>
* Эквивалентно: <br>
* writeText ();
* return readString ();
* @param cmd
* @возвращаться
* @Throws ioException
*/
public String Exec (String cmd) бросает ioException {
WriteText (CMD);
return ReadString ();
}
String login1 (String user, String passwd) бросает ioException {
String read = null;
readString ();
readString ();
read = readstring ();
if (-1! = read.indexof ("login")) {
wriseText (пользователь);
}
read = readstring ();
if (-1! = Read.indexof ("пароль")) {
WriteText (Passwd);
}
read = readstring ();
read += readstring ();
вернуть читать;
// stringBuffer sb = new StringBuffer ();
// while (null! = (read = readstring ())) {
// sb.append (читать);
//}
//
// return sb.toString ();
}
/**
* закрытие
*/
public void close () {
пытаться{
WriteText ("Exit");
WriteText ("Exit");
WriteText ("Exit");
} catch (Exception ex) {
}
пытаться {
if (null! = telnetin) telnetin.close ();
} catch (Exception e) {
}
пытаться {
if (null! = telnetout) telnetout.close ();
} catch (Exception e) {
}
пытаться {
if (null! = telnetClient) telnetClient.disconnect ();
} catch (Exception e) {
}
}
/**
* Установите набор символов во время связи Telnet <br/>
* Примечание: этот набор символов не имеет необходимости в отношении набора символов на стороне сервера <br/>
* Этот метод должен быть вызван до Connect ()
* @param charset
*/
public void setcharset (string charset) {
this.charset = charset;
}
/**
* Сбросьте размер баффа по умолчанию до 2048 байтов.
* @param size
*/
public void setBuffersize (int size) {
this.buff = новый байт [размер];
}
}
Тестовый класс
Кода -копия выглядит следующим образом:
static void t4 () {
Telnetutil tu = new telnetutil ();
пытаться {
tu.connect ("192.168.2.154");
System.out.println (tu.login ("root", "123456"));
//tu.show ();
//System.out.println (tu.readstring ());
//System.out.println(tu.exec("pwd "));
System.out.println (tu.exec ("echo /"123456789/">1.txt"));
System.out.println (tu.exec ("cat 1.txt"));
} catch (ioException e) {
e.printstacktrace ();
}
tu.close ();
}
static void t1 () {
Telnetutil tu = new telnetutil ();
пытаться {
tu.connect ("192.168.2.154");
System.out.println (tu.login ("sl1", "coffee8215"));
//tu.show ();
//System.out.println (tu.readstring ());
System.out.println (tu.exec ("pwd"));
} catch (ioException e) {
e.printstacktrace ();
}
tu.close ();
}