TeraTerm は、もう10年以上利用している Unix ユーザーである私には欠かせないターミナルエミュレータなのですが、これまでマクロ機能を使ったことはありませんでした。
Unix サーバーは一旦ログインしてしまえば、.rc ファイルでシェルスクリプトなどを自動で走らせることができますから、わざわざ外部のマクロから実行する必要性がありませんでしたからね。
自分の環境なら一度に10枚以上のターミナルエミュレータを開きますが、一度開いてしまえばその後しばらくはログインシーケンスを必要としませんのでマクロを作る気になりませんでした。
最近仕事で SSH で通信・設定できる組み込み機器(ルーターみたいなもの)にアクセスするようになり、ログインまでを自動で出来るならそれはそれで便利だと感じるようになりました。一日に何回も何回もアカウントとパスワードを入力するのは結構な苦行。
仕事ではSSH ですが、自宅では足下のサーバーへSSHで接続する必要はないので、telnet で自動ログインするマクロを作ってみました。
TeraTermPro Macro は拡張子 .ttl のテキストファイルです。.ttl ファイルをダブルクリックするだけで、マウスを使ってわざわざ TeraTermProを立ち上げる必要がないようにするには、.ttl拡張子とアプリケーションを関連づけしておくと便利です。既定のプログラム から行ってもいいのですが、私の Windowsにはちょっと古めのTeraTerm がインストールされていたので、旧バージョンをアンインストールし、最新バージョンをインストールすることにしました。このときついでに拡張子の関連づけを行いました。
ちなみに、TeraTermを使用するOSは Windows7 Pro。
セットアップ時にチェックし忘れても、関連づけは後から出来ます。ここでやっておくと楽なだけです。
C:\Program Files (x86)\teraterm 下にインストールされます。この下に、TTPmacro.exe や .ttl テンプレートが保存されます。
今回使うのは、ssh じゃなくて telnet なので、login.ttl ファイルをテンプレートとして使いました。
デフォルト状態は以下。
; Sample macro for Tera Term ; Telnet login ; open Tera Term ; command line = 'TERATERM myhost.mydomain' (telnet) connect 'myhost.mydomain' ; set username UsernamePrompt = 'Username:' Username = 'MYNAME' PasswordPrompt = 'Password:' ; get password from file getpassword 'password.dat' 'mypassword' Password ; login wait UsernamePrompt sendln Username wait PasswordPrompt sendln Password ; OK, auto login complete.
OSがFreeBSD なので、それに合わせて修正しました。赤文字の行。
; Sample macro for Tera Term ; Telnet login ; open Tera Term ; command line = 'TERATERM myhost.mydomain' (telnet) connect 'www.lifewithunix.jp:23 /nossh /T=1' ; set username UsernamePrompt = 'login:' Username = '<user_account>' PasswordPrompt = 'Password' ; get password from file getpassword 'password.dat' 'mypassword' Password ; login wait UsernamePrompt sendln Username wait PasswordPrompt sendln Password ; OK, auto login complete.
connect ホスト名 だけでは、必ずしも telnet で接続できないので、明示的に telnet で接続するためにパラメータを修正します。
ログインプロンプトも FreeBSD の telnetd の場合は、login: に変更。login: のプロンプトが出て来たらアカウントを出力するということ。
<user_account>のところに、自分のアカウントを書き替えます。
同様にパスワードプロンプトも Password: じゃないので、修正。
パスワードは直接 ttl ファイルに書き込んでもいいのですが、テンプレートの getpassword 行をそのまま使うと、初回だけパスワードを尋ねるダイアログボックスが表示され、タイプしたパスワードが暗号化された後、この login.ttl ファイルと同階層に password.dat というファイルが自動作成され、保存されます。とっても便利。
以上のように編集した後、login.ttl を自分がログインしたいホスト名に書き替えます。今回の場合は、my_www.ttl とかなんとか。
そして、my_www.ttl をダブルクリックすると、自動でサーバーと telnet 接続できました。