Расположение примера кода для Java, управляющего Telnet на высоком уровне - PullRequest
1 голос
/ 09 сентября 2011

Я рассмотрел здесь несколько вопросов об использовании Java для управления сеансом telnet, и хотя я вижу некоторый код на уровне сокетов / протоколов и несколько рекомендаций для той или иной библиотеки telnet, я не вижу примеракод или указатель на пример кода для управления сеансом telnet с использованием одной из этих библиотек.Нет причины, почему это не может быть так просто:

MyTel session = new MyTel("host.myco");
session.start();
session.waitForThenType("login:", "imauser");
session.waitForThenType("Password:","secr3et");
String output = session.waitForThenType("Solaris", "tail MyFile.txt");
session.waitForThenType("%>","exit");
session.end();
// enjoy output here

Итак, ищем пример кода, который не входит в сокеты и протокол telnet, но может управлять сеансами telnet.

Ответы [ 2 ]

2 голосов
/ 09 сентября 2011

Какая библиотека Java Telnet или openSSH?

http://sadun -util.sourceforge.net / telnet_library.html

Код sadunявляется частью большего набора утилит.Вам нужны следующие файлы:

com.deltax.util (all)
org.sadun.util.tp (all)
org.sadun.util
> Cache.java
> ClassResolver.java
> OperationTimedoutException.java
> TelnetInputStream.java
> TelnetInputStreamConsumer.java
> TelnetNVTChannel.java
> Terminable.java
> UnixLoginHandler.java

Это позволит вам написать программу, аналогичную той, что в вопросе:

Socket s = new Socket("host.myco", 23);
Writer w = new OutputStreamWriter(s.getOutputStream());
UnixLoginHandler handler = new UnixLoginHandler(s);
TelnetInputStreamConsumer is = handler.doLogin("imauser","secre3t");
System.out.println(is.consumeInput(10000));
is.setConsumptionOperationsTimeout(10000);
w.write("tail MyFile.txt\r\n");w.flush();
String output = is.consumeByCriteria(new TelnetInputStreamConsumer.ContainsStringCriterium("$ "));
handler.doLogout();
System.out.println("output:\n" + output);
0 голосов
/ 09 сентября 2011

Я настоятельно рекомендую использовать Apache Commons Net .В частности, их TelnetClient класс.

См. Также:

Я реализовал свой собственный класс клиента telnet, который просто упаковывает класс, предоставленный Apache.Он расширяемый и простой в использовании.

Примечание:

Единственной проблемой, с которой я столкнулся, было отключение эха.Для получения дополнительной информации см. Мой неразрешенный вопрос:

...