2016-04-06 10 views
0

better questionを参照してください。具体的には、このトピックを参照してください。Javaでシステムレベルに期待するには?

私はちょうどdiscovered、とりわけ、自動化するためのTCLベースのスクリプト言語、telnet接続を期待していました:期待とにフックのいずれかが利用できるどのようなメカニズム

[email protected]:~/NetBeansProjects/expect$ 
[email protected]:~/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: [email protected]        * 
------------------------------------------------------------------------------ 

Press Return to continue:usage: send [args] string 
    while executing 
"send – – “\r”" 
    (file "example" line 9) 
[email protected]:~/NetBeansProjects/expect$ 

は、Javaとの、またはJavaに期待?はい、http://tcljava.sourceforge.net/などがありますが、期限が切れているようです。

Javaにtcl実装があり、それがうまくいかないのであれば、それはうまくいくはずです。しかし、私は何も今までに完全に実装されなかったことを、Webページの更新情報の不足から、推測しています...

ウィキペディアは言う:

のJava

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年から変更されておらず、Javaの期待も数年で触れられていません。

これらのライブラリが使用され、機能している場合、私の申し訳はありませんが、日付は維持されていないことを示しています。

私はむしろexpectとJavaを別々に使用しますが、相互作用するようにします。 2人の間でメッセージをやりとりするためのフックやメカニズムはありますか?

---------------------------------------------- ------------- UPDATE ----------

**

Jaclのは、Javaで書かれたTcl 8.xのインタプリタです。あなたは JavaアプリケーションをTclでスクリプト化できます。

**

http://wiki.tcl.tk/1215

しかし、ライブラリはいくつかの時間では触れられていません。私はそれがどれくらいうまく動作するかははっきりしていません私はそれがexpectのようなものをサポートしているかどうかわからない、様々なexpect試行が維持されていないように見えます。

Donal Fellowsの答えは、本当の解決策がない可能性が高いことは間違いありません。しかし、は、このtclライブラリを使用して、プロセスビルダーではなく、実際のtelnetを呼び出すことができますが、これは非常に暫定的です。

+0

ここで「相互作用」を定義しますか? **あなたはjavaから何をしようとしていますか?何を期待していますか?そして、あなたはそれらを "相互作用する"ためにどのように必要としますか? –

+0

は、メッセージを間に渡します。期待どおりのJavaプログラムにメッセージを渡すにはどうすればいいのですか?別の解決策(telnetとは異なるssh)で同様の質問をするにはhttp://stackoverflow.com/questions/15143619/how-to-implement-expect-interact-command-using-javaも参照してください。 – Thufir

+0

'telnet'接続を自動化するために' expect'を使いたいですか? 'expect'からJavaアプリケーションを制御したいのですか? javaに 'telnet'接続の内容を見せたいのですか?あなたは 'expect'のような論理*を* javaに書いていますか? –

答えて

1

私は対話ループを実装している別のJava期待ライブラリExpectIt(Wikipediaには載っていません)を作成しました。 this exampleをご覧ください。

+0

'import org.apache.commons.net.telnet.TelnetClient'を使うか、システムtelnetを使うことができるでしょうか? – Thufir

+1

ライブラリは他のすべてのJavaライブラリと同様に、Telnetクライアント、ソケット接続、またはその他のストリームソースから取得できる標準Javaストリームを使用します。ここにtelnetの例があります:https://github.com/Alexey1Gavrilov/ExpectIt/blob/master/expectit-core/src/test/java/net/sf/expectit/TelnetExample.java –

+0

この質問は私に変わってしまいました。私はあなたのライブラリにそれを絞り込み、[TelnetクライアントのJavaストリームに関して、ここでより具体的な質問をしました](http://stackoverflow.com/questions/36865567/how-to-use-expectit-to -interact-with-the-telnet-stream)を使用します。 – Thufir

1

Javaで期待するか、Javaで期待できるかはどのようなメカニズムがありますか?

本当にありません。問題は、pseudo-terminalを管理するために、JREが公開していないOSインタフェースを使用する、実際に複雑な低レベルのものをexpectが実行することです。 (システムデバッグAPIを使用しているWindowsの場合は、さらに難しいです。)ネイティブコードで厄介なことをする必要があります。

簡単ルートは、ProcessBuilderでサブプロセスとしてexpectを実行することです。

1

私の知る限り、Swigは、2つの言語の接続に役立ちます。私が間違っていた場合に教えてください

+0

http://www.swig.org/compat.html#SupportedLanguagesには、JavaとRuby、およびtclがリストされています。非常に興味深い。 – Thufir

関連する問題