本サイトはプロモーションを含みます。

TeraTermマクロで自動的にtelnetログインする方法

telnetログインは若干面倒な側面があります。というのも、ログイン処理をすべて自分で書かなくてはならないからです。

telnetログインのやり方

telnetログインを行うためには以下のような手順を踏む必要があります。

  1. connectで接続先の23/tcpへ接続する
  2. ログインプロンプト(login:)を受信したらユーザー名を送信する
  3. パスワードプロンプト(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ログインは完了します。