TeraTermマクロ(TTL)でサーバーに自動ログイン(コピペ可能)

Linux

どーも!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設定を忘れずに!)
→ 「学習用」「開発用」でご利用ください。本番用には不向きです

以上です!

ここまで読んでいただきありがとうございました!

コメント

タイトルとURLをコピーしました