SSHログイン先ごとに設定切替と自動ログインを行うTeraTermマクロを作成した
1. 概要
検証環境と商用環境を取り違える予防として、SSHログイン先ごとにTereTermの設定ファイルを切り替えるTeratermマクロ " teraterm-auto-solarized-macro " を作成した。
設定ファイル上で背景色を変更し、環境を区別できるようにする。
また、パスワード定義ファイルからパスワードの読み出しを行い、自動ログインも行う機能を実装した。
パスワードは暗号化した上で、パスワードファイルに保存するよう、補助ツールも作成した。
作成したマクロのイメージ
接続先ホスト選択
補助ツールでパスワードを暗号化保存
接続先に応じてiniファイルを切り替え
1-1. 機能
auto_solarized.ttl(本体)
- SSH自動ログイン機能(ベーシック認証)
設定ファイルに記載されているパスワードは暗号化 - ホスト一覧プルダウンからのホスト選択
ホスト一覧にないものは通常のTeraterm起動 - SSHログイン先ごとに設定ファイルの切り替え
初期設定状態で3環境(商用, 検証, 開発)を用意
1. 商用:通常のteratermテーマ
2. 検証:solarized darkテーマ
3. 開発:solarized lightテーマ
setpw.ttl(補助ツール)
- パスワードファイルの生成
- パスワードの暗号化
hosts.txt(ログイン情報設定ファイル)
- SSHログイン先ホスト情報の記載
1. IPアドレス
2. ホスト名
3. 環境
4. ログイン識別子
1-2. マクロ作成の背景
会社で商用環境と検証環境を取り違えて作業を行い、自責障害となったという事例があった。
(商用環境と検証環境のターミナルを横に並べて作業していたため、誤って作業したらしい、、、)
チーム内で予防策を考えることになり、まずは簡単にできる環境ごとに背景色を変えることになった。
1-3. マクロの実行環境
- Windows
- Teraterm バージョン4.7.8以降
2. 使い方
2-1. 導入
1.Teratermインストール
ここでは割愛。以下を参照。
TeraTermの最新版(4.82)をWindows7にインストールしてみました!
2.ttlファイルをTeratermマクロ実行ファイル(ttmacro.exe)と関連付け
ここでは割愛。以下を参照。
Tera Term-TTLファイルの関連付け(Windows7編)
3.本プログラムをダウンロード
teraterm-auto-solarized-macro(zip)
4.本プログラムの配置
解凍してTeratermマクロ(ttmacro.exe)と同じフォルダにファイルを展開する
今回の追加対象
C/Program Files (x86)/teraterm
├── ttermpro.exe
├── ttpmacro.exe
├── auto_solarized.ttl (★)
├── hosts.txt (☆)
├── password.txt (☆)
├── setpw.ttl (●)
├── prd.ini (▲)
├── stg.ini (▲)
├── dev.ini (▲)
└── etc...
--------------------------------------
★:マクロ必須ファイル(マクロ本体)
☆:マクロ必須ファイル(設定ファイル)
●:マクロ補助ツール
▲:Teraterm iniファイル(必要に応じて用意)
--------------------------------------
2-2. 初期設定
- setpw.ttlにログインユーザ名とパスワードを記載する
DATA_NUMにユーザ・パスワードの組み合わせの合計登録件数を設定(ここでは3としている)※画面キャプチャを差し替える
ユーザ名は USER_LIST[連番]に設定
パスワードは PW_LIST[連番]に設定
- setpw.ttlを実行する
- password.txtが作成/更新されたことを確認する
- hosts.txtにSSH接続先情報を書く
2-3. 実行
- auto_solarized.ttlを実行する
- 接続先ホストを選択する
リストに登録されているホストへ接続した場合
リストからホスト名を選択し「OK」ボタンを押下する
SSH接続され、hosts.txtで定義した環境ごとに異なるinitファイルを読んだことがわかる
例)
商用(prd): prd.ini
検証(stg): stg.ini
開発(dev): dev.ini
登録されていないホストへ接続したい場合
「other」を選択すると通常のTeratermログイン画面が表示される
3. 苦労したところ
teratermマクロでは以下の点に苦労した。
- foreach がない
- 文字列分割や比較処理後に結果が格納格納される一時変数が決まったグローバル変数に格納されるため、その後の処理で用いるときに、都度変数に入れるなどする必要があり冗長
- 関数に引数を渡せない
4. 最後に
ご意見いただけると助かります。