日常的にシステム運用で「Tera Term」を利用していますが、Tera Term には便利な「マクロ機能」があります。
今回は便利な Tera Term(Teraterm)の使い方、特に自動ログインと自動ログ取得のマクロ機能について解説します。
システム障害時には正確で迅速な対応が必須
システムにトラブルが発生しすぐに調査が必要な場合に、毎回 IP アドレス一覧を確認したり、アカウント&パスワード表を画面に開いてコピペしてログインしていると非常に時間がかかりトラブルシューティングも迅速にできません。
また、緊張する場面で毎回確実に目的のサーバーにログインすることは難しいです。
パニック状態になっていると違うサーバーにログインして OS 再起動して更に被害が広がる・・・ということも考えられます。
参考となる Tera Term マクロ
以下のマクロファイルを作成してみました。
特徴としては以下の機能を付けています。
- ファイル名にホストとIPアドレスを追加できるのでファイル名ですぐに対象のサーバーが分かる
- 本番環境と検証環境で画面の設定を変更できる
- screen コマンドを入れているのでターミナルのセッションが切れても思わぬ障害が発生しない
- ホストごとにパスワードがバラバラでも個別にパスワードファイルからパスワードを取得できる
- パスワードファイルは「password」フォルダに保存されるが平文ではない
以下の環境でマクロファイル「test@192.168.0.3.ttl」を作成しています。
- ホスト名:test
- IPアドレス:192.168.0.3
- アカウント:test01
- パスワード:123456
SSH でパスワード認証の場合
SSH でパスワード認証でログインする場合の Tera Term マクロです。
C:\Users\xxxx>type C:\Users\xxxx\Desktop\teratermログイン\test@192.168.0.3.ttl ;; Tera Term 自動ログインマクロ ;; 2018/11/11 作成
HOST_PASS_NAME = groupmatchstr1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; アカウント情報 ;; ‘C:\Users\xxxx\Desktop\teratermログイン\password\<ホスト名>_password.dat’ ファイルからパスワードを取得します。 ;; 本番環境の場合こちらを有効にします。 ;;INIFILE = ‘C:\Users\xxxx\teraterm-4.93\teraterm\DEVELOPMENT.INI’ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
getpassword PASSFILE USERNAME PASSWORD
; Tera Term のマクロファイル(例:test@192.168.0.3.ttl)を’@’で区切ります。 strsplit param1 ‘@’ ; 区切った文字列は変数 groupmatchstr1~9 に代入されます。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; msg = HOSTNAME ;; パスワード認証の場合はパスワードファイルを選択します。 connect msg wait ‘$’
;; ターミナルのセッションが切れてもホストに影響がないように screen コマンドを実行します。 |
SSH で鍵認証の場合
SSH で鍵認証の場合ですが AWS で試してみます。
IPv4 パブリック IP は「3.112.12.164」です。
- ホスト名:test
- IPアドレス:3.112.12.164
- アカウント:ec2-user
- パスフレーズ:なし
下図のように「ttl」ファイルを作ります。
SSH で鍵認証でログインする場合の Tera Term マクロファイルの中身です。
※このマクロファイルは鍵ファイルにパスフレーズが設定されていない場合(ノーパスフレーズの場合)です。(鍵ファイルにパスフレーズを設定している場合は、パスワード認証のようにパスフレーズの設定が必要です)
C:\Users\xxxx>type C:\Users\xxxx\Desktop\teratermログイン\test@3.112.12.164.ttl ;; Tera Term 自動ログインマクロ ;; 2018/11/11 作成
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; アカウント情報 ;; 鍵認証の場合の鍵ファイルを指定します。 KEY_FILE = ‘C:\Users\xxxx\Desktop\teratermログイン\key\key_file’ ;; 本番環境の場合こちらを有効にします。 ;;INIFILE = ‘C:\Users\xxxx\teraterm-4.93\teraterm\DEVELOPMENT.INI’ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Tera Term のマクロファイル(例:test@192.168.0.3.ttl)を’@’で区切ります。 strsplit param1 ‘@’ ; 区切った文字列は変数 groupmatchstr1~9 に代入されます。 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; msg = HOSTNAME strconcat msg ‘ /keyfile=’ connect msg wait ‘$’
;; ターミナルのセッションが切れてもホストに影響がないように screen コマンドを実行します。 |
マクロはファイルをダブルクリックすると起動します。
以下のように EC2 にリモートログインし、さらに screen コマンドも実行されている状態になっています。
Screen コマンドでマウスのホイールで画面スクロールができなくなる現象の対処
実は Tera Term 上で screen コマンドを実行すると、画面のスクロール(マウスで画面を上下にスクロールする)ができなくなり、過去のコマンド結果表示されるようになります。
実はこの機能、うっかりしていると非常に危険で知らずに過去のコマンド履歴が表示され、何かの拍子に「Enter」キーを押下した時に「reboot」コマンドがあった場合、システムが再起動してしまう可能性があります。
Tera Term のアプリケーションカーソルの無効化
Tera Term のメニューより「設定」-「キーボード」をクリックします。
「Tera Term:キーボードの設定」画面で「アプリケーションカーソル」にチェックを入れて「OK」ボタンをクリックします。
設定後はマウスのホイールを使って画面を上下にスクロールできるようになります。
自動ログファイルの取得
更に Tera Term でログインした際に自動的にログファイルを取得するように設定します。
Tera Term のメニューより「設定」–「その他の設定」をクリックします。
Tera Term の「その他の設定」画面で以下のように設定します。
- ログ表示用エディタ ← 見やすいようにサクラエディタを指定します。
- 標準ログファイル名 ← ファイル名を「&h_%Y%m%d_%H%M%S.txt」にしています。
- 標準のログ保存先フォルダ ← ログファイルの保存先を指定します。
- 自動的にログ採取を開始する ← チェックを入れます。
- タイムスタンプ ← チェックを入れます。
Tera Term のログファイル名を設定するに当たり、以下の2つの考え方があると思いました。
- 日時を先頭にする場合 ← ファイル名でソートした時に日付順となる
- ホスト名を先頭にする場合 ← ファイル名でソートした時にホスト名ごとになる
- &h ← 接続しているホスト名(IPアドレス)
- %Y ← 4桁の西暦(2018,2017)
- %m ← 月(01~12)
- %d ← 日付(01~31)
- %H ← 24時間表記の時刻(00~23)
- %M ← 分(00~59)
- %S ← 秒 (00 ~ 59)
今回は以下のように設定しました。
&h_%Y%m%d_%H%M%S.txt
マクロを実行すると以下のように自動的にログファイルが作成されます。
ログファイルの中を開くと以下のようになっています。
タイムスタンプが付いているので後からいつどのコマンドを実行したのかがすぐに分かります。
[2018-11-11 17:53:35.937] Last login: Sun Nov 11 08:53:13 2018 from 133-175-40-30.tokyo.fdn.vectant.ne.jp |
コメント