telnetログインは若干面倒な側面があります。というのも、ログイン処理をすべて自分で書かなくてはならないからです。
タップできる目次
telnetログインのやり方
telnetログインを行うためには以下のような手順を踏む必要があります。
- connectで接続先の23/tcpへ接続する
- ログインプロンプト(login:)を受信したらユーザー名を送信する
- パスワードプロンプト(password:)を受信したらパスワードを送信する
telnetログインが面倒だと最初に書いたのは、ログインやパスワードのプロンプトが接続先によって異なるためです。大抵は「login」や「password」なのですが、必ずしもそうとは限らないので、事前にどのようなログイン・パスワードプロンプトが表示されるのか調べておく必要があります。
TeraTermマクロでtelnetログインしてみよう
まずは先にコードを見てください。
connect '192.168.2.203:23 /nossh /T=1' wait 'login:' sendln 'foo' wait 'Password:' sendln '********
ポート番号を指定する
まずconnectの引数に注目すると192.168.2.203:23となっています。この「:23」という箇所はポート番号を指定しています。TeraTermマクロでtelnetログインする場合は、明示的にポート番号を指定するとトラブルを未然に抑えることができます。次に「/nossh」というのはsshプロトコルを使わないという事を明示的に指定しています。TeraTermの設定ファイル(teraterm.ini)の内容によってはsshプロトコルで接続を試みる場合があるので「/nossh」を指定するとトラブルを未然に防ぐ事ができます。最後に「/T=1」というのは、telnetプロトコルを使用すると言う意味です。これがないとtelnetでログインする事ができないので、必ず指定します。
ログインプロンプトを受信するまで待つ
次は見慣れないwaitが出てきました。これは引数で渡した文字列を受信するまでTeraTermマクロの動作を停止させるためのTTLコマンドです。ここではログインプロンプトの「login:」という文字列を受信するまで待っています。
ユーザー名を送信する
またまた見慣れないsendlnが出てきました。sendは送信、lnはlineの略で改行を意味します。このTTLコマンドは引数で渡した文字列を送信後、キーボードのReturn(Enter)キーを押下した事と同様の動作をします。sendln ‘foo’としているので、ユーザー名としてfooを入力後、Returnキーを押下した事になります。
パスワードプロンプトを受信するまで待つ
ユーザー名を入力するとパスワードプロンプト(Password:)が表示されるので、それまでTeraTermマクロの動作を停止させるためにwaitで待ち受けています。
パスワードを送信する
パスワードプロンプトを受信したら、最後にsendlnでパスワードを送信してtelnetログインは完了します。