TeraTermでTelnetに自動ログイン

2022年10月14日

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した方が無難と思われる。

未分類

Posted by ysugimura