另请参阅有关此主题的更好的问题,更具体。
我刚刚发现了expect,一种基于 tcl 的脚本语言,用于自动化 telnet 连接等:
thufir@mordor:~/NetBeansProjects/expect$
thufir@mordor:~/NetBeansProjects/expect$ expect example rainmaker.wunderground.com 3000
spawn telnet rainmaker.wunderground.com 3000
Trying 38.102.137.140...
Connected to rainmaker.wunderground.com.
Escape character is '^]'.
------------------------------------------------------------------------------
* Welcome to THE WEATHER UNDERGROUND telnet service! *
------------------------------------------------------------------------------
* *
* National Weather Service information provided by Alden Electronics, Inc. *
* and updated each minute as reports come in over our data feed. *
* *
* **Note: If you cannot get past this opening screen, you must use a *
* different version of the "telnet" program--some of the ones for IBM *
* compatible PC's have a bug that prevents proper connection. *
* *
* comments: jmasters@wunderground.com *
------------------------------------------------------------------------------
Press Return to continue:usage: send [args] string
while executing
"send – – “\r”"
(file "example" line 9)
thufir@mordor:~/NetBeansProjects/expect$
有哪些机制可以使用 Java 连接到 expect 中,或者使用 expect 连接到 Java 中?是的,有http://tcljava.sourceforge.net/以及其他一些,但它们似乎已经过时了。
如果在 Java 中有一个 tcl 实现,为什么不,那会起作用,我敢肯定。然而,我推断,从缺乏对网页的更新来看,没有什么是完全实现的......
维基百科说:
爪哇
expect4j — an attempt at a Java clone of the original Expect
ExpectJ — a Java implementation of the Unix expect utility
Expect-for-Java — pure Java implementation of the Expect tool
但是,expect4j 说这是一种尝试,ExpectJ 自 2010 年以来就没有改变过,Expect-for-Java 也多年来没有接触过。
如果这些库被使用和运行,我很抱歉,但日期表明它们没有被维护。
我宁愿单独使用expect和Java,但是让它们交互。是否有在两者之间传递消息的钩子或机制?
-------------------------------------------------- - - - - -更新 - - - - -
**
Jacl 是用 Java 编写的 Tcl 8.x 解释器。您可以在 Tcl 中编写 Java 应用程序脚本。
**
但是,图书馆已经有一段时间没有动了。我不太确定它的效果如何。我不知道它是否支持类似expect
的东西,看起来各种expect
尝试都没有得到维护。
Donal Fellows 的回答很可能是正确的,即没有真正的解决方案。然而,可能只是可以使用这个 tcl 库来启动一个 telnet 会话,调用真正的 telnet,而不是使用进程构建器,但这是非常初步的。