TeraTermでTelnetに自動ログイン
FileZillaのようなFTPソフトや、WinSCPのようなSSHベースのファイル転送ソフトでは、あらかじめログイン情報をGUIで設定しておけばワンクリックでログインできて、いちいちパスワードを引っ張り出す必要も、手入力する必要も無いのだが、これをtelnetあるいはSSHのターミナルでできないものかと常々考えていた。
そんなに需要が無いものなのだろうか、なかなか見つけ出すことができず、結局TeraTermのマクロにたどりついた。ふだんは、PuTTYかTeraTermのいずれかを使っている。
結論
拡張子TTLのマクロファイルに設定を記述しておき、それをダブルクリックするだけでtelnet接続してログイン済の状態にまですることができる。
やり方概要
- 拡張子TTLの適当なファイルを作成する。これは単純にテキストファイルだが、拡張子がTTLというだけ。
- このTTLをダブルクリックした時に起動するプログラムを「C:\Program Files (x86)\teraterm\ttpmacro.exe」に指定する。
実際にTTLを記述してダブルクリックすれば、Windows側が「何で実行するか」と聞いてくるので、上を指定する。この時注意しなければならないことは、「TTPMACRO.EXE」であること、間違えて「TTERMPRO.EXE」を指定してしまうと、必ず「ホスト名が無効」云々のエラーになる。
TTLファイルの書き方
これは、TeraTermマクロ-TELNET自動ログイン(ホスト・ユーザ・パスワード固定版)を参考にさせていただいた。以下である。漢字部分を適当に書き換える。
HOSTADDR = 'ホスト名あるいはIPアドレスのどちらでもよい'
USERNAME = 'ユーザの名前'
PASSWORD = 'そのパスワード'
COMMAND = HOSTADDR
strconcat COMMAND ':23 /nossh /T=1'
connect COMMAND
wait 'login:'
sendln USERNAME
wait 'Password:'
sendln PASSWORD
end
これだけだ。これを記述し、拡張子TTLのファイルとして、それをダブルクリックすると、Windowsが「どのプログラムで実行するのか」と聞いてくるので、先の「TTPMACRO.EXE」を指定すればOK。自動的にログイン状態でTeraTermの画面が起動する。
今回はtelnetが必要だったのでtelnetのことしか考えてないが、SSHも同様に簡単にできるかもしれない。
TeraTermのタイトル表示
デフォルトでは、HOSTADDRの値がウインドウタイトルになってくれるのだが、これではまずい場合がある。どうしても自分でタイトルを設定したい。TITLE変数にタイトルを入れ、settitleでタイトルを設定する。settitleは、少なくともconnectの後でないといけない。
TITLE = '任意のタイトル'
HOSTADDR = 'ホスト名あるいはIPアドレスのどちらでもよい'
USERNAME = 'ユーザの名前'
PASSWORD = 'そのパスワード'
COMMAND = HOSTADDR
strconcat COMMAND ':23 /nossh /T=1'
connect COMMAND
settitle TITLE
wait 'login:'
sendln USERNAME
wait 'Password:'
sendln PASSWORD
end
しかし、これだけではダメだった。TeraTerm.iniという設定ファイルを書き換える必要があるのだが、これを直接行うのは面倒なのでGUIで変更する。
まず、適当にTeraTermを起動して、その他の設定を開く、そこで設定した後で「設定の保存」を行う。
次の三つのチェックがONになっているので、OFFにする。
「ウインドウタイトルの変更要求を受け入れる」を無効にする。
これで後は、「設定の保存」を行い、元からあるTeraTerm.iniを書き換えてやる。不安な人は、元からあるものをバックアップしておくこと。
これで適当なタイトルをつけてやると、それがウインドウタイトルになる。
バグ
これはバグだと思うが、複数のTTLファイルを作成しておき、その中の一つでもsettitleすると、他のsettitleしていないTTLがそのタイトルになってしまう。
すべてに明示的にsettitleした方が無難と思われる。