0

另请参阅有关此主题的更好的问题,更具体。

我刚刚发现了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 应用程序脚本。

**

http://wiki.tcl.tk/1215

但是,图书馆已经有一段时间没有动了。我不太确定它的效果如何。我不知道它是否支持类似expect的东西,看起来各种expect尝试都没有得到维护。

Donal Fellows 的回答很可能是正确的,即没有真正的解决方案。然而,可能只是可以使用这个 tcl 库来启动一个 telnet 会话,调用真正的 telnet,而不是使用进程构建器,但这是非常初步的。

4

3 回答 3

1

有哪些机制可以使用 Java 连接到 expect 中,或者使用 expect 连接到 Java 中?

真的没有。问题是,expect 做了一些非常复杂的低级操作来管理伪终端,并且使用了 JRE 没有公开的操作系统接口。(如果你在使用系统调试 API 的 Windows 上,那就更棘手了。)你必须用本机代码做一些讨厌的事情。

简单的方法是通过ProcessBuilder.

于 2016-04-06T12:40:32.757 回答
1

我创建了另一个 Java 期望库ExpectIt(未在 Wikipedia 中列出),它实现了交互循环。看看这个例子

于 2016-04-25T21:27:51.760 回答
1

据我所知,Swig这将帮助您更好地连接这两种语言。让我知道,以防我错了

于 2016-04-07T05:20:03.020 回答