Telnet送信Ctrl-C


14

telnetを使用して、トラフィックをRS-232ポートにプロキシするターミナルサーバーに接続します。

残念ながら、一部のデバイスを使用する場合、CTRL+ C文字(0x03)を送信することはできません。キャラクターを送信する代わりに、ローカルクライアントがキーストロークをキャッチしたように思われ、私は「some-other-mode」のままです。私が欲しかったのはキャラクターを送ることだけでした。

これをデバッグするために、私は遊んでいます:

^] toggle termdata

そして

^] toggle options

動作しないターミナルサーバーでCTRL+ を押すと、次のようになりCます。

telnet 10.10.129.101 2012
Trying 10.10.129.101...
Connected to termserv-val3 (10.10.129.101).
Escape character is '^]'.
^]
telnet> toggle options
Will show option processing.
^]
telnet> toggle termdata
Will print hexadecimal representation of terminal traffic.
SENT IAC IP
SENT DO TIMING MARK

動作するターミナルサーバーで何が起こるかを次に示します。

telnet termserv-val2 2012
Trying 10.10.128.93...
Connected to termserv-val2 (10.10.128.93).
Escape character is '^]'.

telnet> toggle options
Will show option processing.

telnet> toggle termdata
Will print hexadecimal representation of terminal traffic.
< 0x0   03
^C

試しましたtoggle localcharsが、違いはありませんでした。

またmode characterCTRL+ C文字を送信できるようにしましたが、ここではデバイスから出力が返されませんでした。

これを解決するためにTelnetクライアントを構成するにはどうすればよいですか?


2
これはどのターミナルサーバーですか?
マイケルハンプトン

回答:


5

telnetクライアントでlocalcharsをオフにしようとしましたか?

bash$ telnet
telnet> toggle localchars
Won't recognize certain control characters.
telnet> open myhost

~/.telnetrctelnetのバージョンによっては、このコマンドをファイルに含めることもできます。


私はそれを試しました(質問の最後の部分を読んでください)
アラン

3

8ビットクリーンモードを試してみてください。Telnetがデータの多くを解釈するのを停止します。

telnet -8 host port

(これは暗闇でのショットです)

ほとんどの場合、Ctrl-CやCtrl-Zなどのキーストロークを事前に解釈することをtelnetに停止させようとしています。8ビットモードが役立ちます。


1
私はこれを試しましたが、うまくいきませんでした。私はこれまでに別の解決策を見つけました。ターミナルサーバーは「TCPサーバーモード」として動作するように構成できます(デフォルト設定、問題があります)が、これを「リアルCOMモード」に変更すると動作します。実際の違いが何なのかわからない
アラン

解決策を見つけて、おめでとうございます。問題を修正するために常に良い。
lornix

年が...私は、このソリューションであまりにも満足していない、私はむしろそれが私のtelnetクライアントの設定に変更を加えることによって解決しなければならない
アラン・

1
@Allanは、問題を修正するための正しい回答としてマークして、コメントとして回答を送信してください、ありがとう。
利用不可

3

これは役立つかもしれませんが、代わりに3つの他のツールを使用しますtelnet

echo 03 | xxd -r -p | nc host port


1

^Cブレーク文字です。telnetエスケープ(デフォルトは^])で送信してから、を送信できますsend brk


3
TelnetのBRKシーケンスは、受信側で実装固有の意味を持ち、ETX^C)文字を送信することとは異なります。Unixyシステムでは、通常、TCSBRK ioctlTTY telnetdが使用しているものは何でも実行することを意味します。シリアルデバイスでは、多くの場合、送信ラインを1/4から0.5秒の間ローに保持することになります。
Blrfl

それが何かを変更するかどうかはわかりませんがquit、telnetにはコマンドもあります。
VasyaNovikov

0

「トグルオプション」と「用語データのトグル」を使用して、サイトの状況が元のポスターの状況と一致することを確認しました。ドキュメントに記述されているように、telnetコマンド「send ip」で具体的に^ C(control-C)文字を送信できました。私の場合、3つのコマンドすべてを〜/ .telnetrcに入れています


0

使用する

nc host port

必要なものがサーバーポートに接続し、Ctrl C必要なときに中断するだけの場合。あなたはインストールできncnetcatパッケージ。

PSアイデアは@ bambam-sの回答から取られxxdていますが、使用されたコマンドの意味がわからないため、私のユースケースではそれがなくても問題なく機能します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.