Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 >  掲示板 >  掲示板(telnetコマンドにて)
閲覧数:586
掲示板(telnetコマンドにて)
名前
匿名
題名 telnetコマンドにて
質問内容

質問を評価する
(0ポイント)
お世話になっております。
javaからTelnetClientを生成し、コマンドを発行した際に不可解な現象が起きているのでお力を貸して頂けたらと思い質問します。

現在、javaのTelnetClientでtelnet接続をした後に、以下の手順でコマンドを発行しています。

String RETURN_CODE = "\n";
String commandValue  = "telnetで発行したいコマンド";

InputStream instr = telnetClient.getInputStream();
OutputStream ostream = telnetClient.getOutputStream();
writer = new OutputStreamWriter(ostream);
writer.write(commandValue + RETURN_CODE);
writer.flush();

この状態で入力ストリームの情報を取得した際に
発行したコマンドが返ってくる場合と返ってこない場合があり、動作が不安定になってしまっています。
通常発行したコマンドに対する返り値が入力ストリームに格納されるという認識なのですが、発行コマンド自体が入力ストリームに入る可能性として何か調べる取っ掛かりになりそうな懸念点などありますでしょうか?

例)正常動作 --------------------------
writer.write("hostname\n");
writer.flush();

instrの中身を出力
nmz-nma001
[root@nmz-nma001 ~]#

例)異常時動作 --------------------------
writer.write("hostname\n");
writer.flush();

instrの中身を出力
hostname
nmz-nma001
[root@nmz-nma001 ~]#


※telnet接続しに行くサーバは可変です。
 サーバ側のtelnet設定かとも思い調査をしているのですが
 難航しています。
質問日時 2013-10-04 10:26:26
名前
匿名
回答内容

回答を評価する
(0ポイント)
エコーがかかってるんでしょうね
TeraTermなどでのターミナル操作の場合、
レスポンスだけ返されても分かりにくいので入力端末からの入力値をレスポンスとして返すように
エコーが効きます。
TeraTermでコマンド打つとコマンドも表示されますよね。あれはサーバーからエコーとして帰ってきている値です。

で、このエコーをオフにするのは以下のNo.5の回答が参考になるかと思います。
http://stackoverflow.com/questions/6410579/how-to-disable-echo-when-sending-a-terminal-command-using-apache-
commons-net-tel

回答日時 2013-10-04 12:42:24
名前
匿名
回答内容

回答を評価する
(0ポイント)
>以下のNo.5の回答が参考になるかと思います。
返答有難うございます。
そこのサイトを参考にパラメータを変えたり、命令を出すタイミングを変えたりなど、パターンを変えて試してみたのですが、残念なことに状況は変わりませんでした。

そこのサイトにある

int[] msg = {TelnetCommand.DONT,TelnetOption.ECHO};
telnet.sendSubnegotiation(msg);

という命令が実際に誰に何を要求するかの指定だと思うのですが、エコーを停止しろと命令するだけではダメなのでしょうか?
回答日時 2013-10-04 18:59:17
回答内容を入力し、「確認」ボタンをクリックしてください。
ログインしていません。ログインしなくても回答はできますが、ログインすると、質問・回答の管理、更新があった場合のメールでの通知を受けることができます。 ユーザIDをお持ちでない方は「ID登録」からユーザIDの登録を行ってください。
氏名 匿名
回答内容
 



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道