Telnetセッションに自動的に接続するために予想されるファイルを使用したいと思います。プロセスは次のとおりです。
- 特定のIPとポートに接続すると、次のように表示されます。
escape character is ]
- その後、私たちはCtrl+D
\x04
Ctrl+を送信するExpectファイルを作成しましたD。ファイルを実行すると接続はうまくいきますが、Ctrlキーボードから+をくれと言いますね。しかし、スクリプト自体にD自動的に+を入力したいと思います。どの操作も手動で実行しないでください。CtrlD
方法を説明できますか?
答え1
予想シェルを使用せずに Telnet を自動的にシャットダウンできます。
sleep <n> | telnet <server> <port>
N- 自動的に終了する前に待機する秒数。 0.5のような素数にすることができます。一部の必須出力は、指定された待機時間内に返されない場合があります。したがって、それに応じて増加する必要があるかもしれません。
仕える人– 宛先サーバーの IP またはホスト名。
ポート- 宛先サービスのポート番号。
次のように出力をファイルにリダイレクトすることもできます。
sleep 1 | telnet <server> <port> > output.log
答え2
エスケープ文字をより簡単に送信できる文字に変更することをお勧めしますexpect
。たとえば、感嘆符を送信しないことがわかっている場合は、感嘆符をエスケープ文字として使用します。
$ telnet -e ! 10.1.2.3 80
Telnet escape character is '!'.
Trying 10.1.2.3...
Connected to 10.1.2.3.
Escape character is '!'.
GET!
telnet> quit
Connection closed.
答え3
ctrl+ V、ctrl+を入力して、D目的のスクリプトからリテラルバイトシーケンスを取得できます。期待どおりにctrl+をインタラクティブに入力したように、このメッセージが送信されますD。