どーも!marusukeです!
Linuxサーバーにターミナルエミュレータ(通信ソフト)のTera Term(テラターム)のマクロ(TTL)を使って、
サーバーへ自動ログインしたいけれど、まず何から書けばいいか分からないという方は多いと思います!
この記事では、パスワードを別ファイルから読み込む方法を使って、初心者でも理解できる自動ログインの例と、利用するコマンドを解説します!
connect コマンド
connect <引数>
connect は、Tera Term から サーバーやネットワーク機器へ接続を開始するコマンドです。
自動ログインの最初の一歩になります。
connect の引数(必須/任意)
connect <接続先>[:<ポート>] [/<接続方式>] [/timeout=<秒>]
| 引数 | 必須 | 説明 |
|---|---|---|
<接続先> | 必須 | IPアドレスまたはホスト名 |
:<ポート> | 任意 | SSHは通常22 |
/<接続方式> | 推奨 | /ssh または /telnet |
/timeout=<秒> | 任意 | 接続待ち時間 |
wait コマンド
wait <待機文字列>
wait は、画面に指定した文字列が表示されるまで待つコマンドです。
ログイン画面の login: や Password: を待つことで、入力タイミングのズレを防げます。
wait の指定例(タイムアウト付き)
wait <待機文字列> <タイムアウト秒>
| 引数 | 必須 | 説明 |
|---|---|---|
<待機文字列> | 必須 | 完全一致で判定 |
<タイムアウト秒> | 任意 | 最大待機時間 |
戻り値
result=0:検出成功result=1:タイムアウト
sendln コマンド
sendln <送信文字列>
sendln は、文字列を送信してEnterを押すコマンドです
ユーザー名・パスワード・コマンド実行など、ほとんどの入力はこれで行います
if コマンド
if <条件> then
<処理>
endif
if は、成功/失敗で処理を分岐するためのコマンドです。
特に wait の直後に使い、画面が出なかったときに安全に止めるのが定番です。
if でよく使う演算子(使用例付き)
| 演算子 | 意味 | 使用例 |
|---|---|---|
= | 等しい | if result=0 then |
!= | 等しくない | if result!=0 then |
end コマンド
end
end は、TTLマクロを終了するコマンドです
エラー時に途中終了したい場合にも使えます
strdim コマンド
strdim <変数名> <長さ>
strdim は、文字列を入れる変数を用意するコマンドです。
TTLでは、文字列を入れる箱(変数)を先に作らないとエラーになりやすいので、初心者ほど重要です。
strdim の使いどころ
- ファイルから読み込んだ1行文字列を保存しておき、使い回したいとき
filereadln コマンド
filereadln <ファイル名> <変数名>
filereadln は、ファイルから1行読み込み、変数に入れるコマンドです
今回は「パスワードを別ファイルに書いておき、マクロで読み込んで送信する」ために使います
filereadln のポイント
- 読み込みに失敗したり、ファイルの最後(EOF)になると
resultが変わります - そのため
if result!=0 then ... endの形でチェックするのが安全です
別ファイルからパスワードを読み込む自動ログイン例
事前に、TTLと同じフォルダに パスワードファイルを用意します
pass.txt(例:1行だけ)
MySecretPassword
; 1) パスワードを入れる変数を作る(最大50文字まで)
strdim passwd 50
; 2) pass.txt の1行目を読み込んで passwd に入れる
filereadln 'pass.txt' passwd
if result!=0 then
messagebox 'pass.txt が読めません(存在しない/権限/空ファイルなど)'
end
endif
; 3) 接続
connect <接続先> /ssh
; 4) login待ち → ユーザー名送信
wait 'login:' 10
if result!=0 then
messagebox 'login: が表示されません'
end
endif
sendln <ユーザー名>
; 5) Password待ち → ファイルから読んだパスワード送信
wait 'Password:' 10
if result!=0 then
messagebox 'Password: が表示されません'
end
endif
sendln passwd
; 6) 終了
end
; 実行時の動作説明
; - pass.txt の内容を読み込む
; - 接続して login: を待つ
; - ユーザー名を入力し、Password: を待つ
; - pass.txt のパスワードを送ってログインを試みる
この自動ログイン方法の注意点
この使用方法で、pass.txt を共有すると、パスワードも一緒に漏れます(GitやSubversionなどでバージョン管理している時は注意が必要です!.gitignore設定やTortoiseSVNは右クリックで「無視リストに追加」svn:ignore設定を忘れずに!)
→ 「学習用」「開発用」でご利用ください。本番用には不向きです
以上です!
ここまで読んでいただきありがとうございました!


コメント