【Tera Term】【コピペでできる】便利なマクロ(自動ログイン)と自動ログローテートの設定手順【teraterm】

日常的にシステム運用で「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
strconcat PASSPATH ‘password\’
strconcat PASSPATH HOST_PASS_NAME
strconcat PASSPATH ‘_password.dat’

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; アカウント情報
USERNAME = ‘test01’

;; ‘C:\Users\xxxx\Desktop\teratermログイン\password\<ホスト名>_password.dat’ ファイルからパスワードを取得します。
PASSFILE = PASSPATH

;; 本番環境の場合こちらを有効にします。
INIFILE = ‘C:\Users\xxxx\teraterm-4.93\teraterm\PRODUCTION.INI’
;; 開発環境の場合こちらを有効にします。

;;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 に代入されます。
; 区切った文字列の2番目の部分(IPアドレス)をホスト名として設定します。
strreplace groupmatchstr2 1 ‘\.ttl’ ”
HOSTNAME = groupmatchstr2

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

msg = HOSTNAME
strconcat msg ‘:22 /ssh /auth=password /user=’
strconcat msg USERNAME

;; パスワード認証の場合はパスワードファイルを選択します。
strconcat msg ‘ /passwd=’
strconcat msg PASSWORD
strconcat msg ‘ /F=’
strconcat msg INIFILE
strconcat msg inputstr

connect msg

wait ‘$’

;; ターミナルのセッションが切れてもホストに影響がないように screen コマンドを実行します。
sendln “screen”
wait ‘$’
sendln “echo screenコマンド実行します。”
wait ‘$’
sendln “echo screen -lsコマンドでセッションを確認可能です。”

 

 

 

 

 

SSH で鍵認証の場合

SSH で鍵認証の場合ですが AWS で試してみます。

 

IPv4 パブリック IP は「3.112.12.164」です。

  • ホスト名:test
  • IPアドレス:3.112.12.164
  • アカウント:ec2-user
  • パスフレーズ:なし

【Tera Term】【コピペでできる】便利なマクロ(自動ログイン)と自動ログローテートの設定手順【teraterm】

 

 

下図のように「ttl」ファイルを作ります。

【Tera Term】【コピペでできる】便利なマクロ(自動ログイン)と自動ログローテートの設定手順【teraterm】

 

 

SSH で鍵認証でログインする場合の Tera Term マクロファイルの中身です。

※このマクロファイルは鍵ファイルにパスフレーズが設定されていない場合(ノーパスフレーズの場合)です。(鍵ファイルにパスフレーズを設定している場合は、パスワード認証のようにパスフレーズの設定が必要です)

C:\Users\xxxx>type C:\Users\xxxx\Desktop\teratermログイン\test@3.112.12.164.ttl

;; Tera Term 自動ログインマクロ

;; 2018/11/11 作成

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;; アカウント情報
USERNAME = ‘ec2-user’

;; 鍵認証の場合の鍵ファイルを指定します。

KEY_FILE = ‘C:\Users\xxxx\Desktop\teratermログイン\key\key_file’

;; 本番環境の場合こちらを有効にします。
INIFILE = ‘C:\Users\xxxx\teraterm-4.93\teraterm\PRODUCTION.INI’
;; 開発環境の場合こちらを有効にします。

;;INIFILE = ‘C:\Users\xxxx\teraterm-4.93\teraterm\DEVELOPMENT.INI’

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

 

; Tera Term のマクロファイル(例:test@192.168.0.3.ttl)を’@’で区切ります。

strsplit param1 ‘@’

; 区切った文字列は変数 groupmatchstr1~9 に代入されます。
; 区切った文字列の2番目の部分(IPアドレス)をホスト名として設定します。
strreplace groupmatchstr2 1 ‘\.ttl’ ”
HOSTNAME = groupmatchstr2

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

msg = HOSTNAME
strconcat msg ‘:22 /ssh /auth=publickey /user=’
strconcat msg USERNAME
;; 鍵ファイルを読み込みます。

strconcat msg ‘ /keyfile=’
strconcat msg KEY_FILE
strconcat msg ‘ /F=’
strconcat msg INIFILE
strconcat msg inputstr

connect msg

wait ‘$’

;; ターミナルのセッションが切れてもホストに影響がないように screen コマンドを実行します。
sendln “screen”
wait ‘$’
sendln “echo screenコマンド実行します。”
wait ‘$’
sendln “echo screen -lsコマンドでセッションを確認可能です。”

 

 

マクロはファイルをダブルクリックすると起動します。

【Tera Term】【コピペでできる】便利なマクロ(自動ログイン)と自動ログローテートの設定手順【teraterm】

 

 

以下のように EC2 にリモートログインし、さらに screen コマンドも実行されている状態になっています。

【Tera Term】【コピペでできる】便利なマクロ(自動ログイン)と自動ログローテートの設定手順【teraterm】

 

 

 

 

Screen コマンドでマウスのホイールで画面スクロールができなくなる現象の対処

実は Tera Term 上で screen コマンドを実行すると、画面のスクロール(マウスで画面を上下にスクロールする)ができなくなり、過去のコマンド結果表示されるようになります。

実はこの機能、うっかりしていると非常に危険で知らずに過去のコマンド履歴が表示され、何かの拍子に「Enter」キーを押下した時に「reboot」コマンドがあった場合、システムが再起動してしまう可能性があります。

【Tera Term】【コピペでできる】便利なマクロ(自動ログイン)と自動ログローテートの設定手順【teraterm】

 

 

 

Tera Term のアプリケーションカーソルの無効化

Tera Term のメニューより「設定」-「キーボード」をクリックします。

【Tera Term】【コピペでできる】便利なマクロ(自動ログイン)と自動ログローテートの設定手順【teraterm】

 

 

「Tera Term:キーボードの設定」画面で「アプリケーションカーソル」にチェックを入れて「OK」ボタンをクリックします。

【Tera Term】【コピペでできる】便利なマクロ(自動ログイン)と自動ログローテートの設定手順【teraterm】

 

 

設定後はマウスのホイールを使って画面を上下にスクロールできるようになります。

【Tera Term】【コピペでできる】便利なマクロ(自動ログイン)と自動ログローテートの設定手順【teraterm】

 

 

 

自動ログファイルの取得

更に Tera Term でログインした際に自動的にログファイルを取得するように設定します。

 

Tera Term のメニューより「設定」「その他の設定」をクリックします。

 

 

 

Tera Term の「その他の設定」画面で以下のように設定します。

  • ログ表示用エディタ ← 見やすいようにサクラエディタを指定します。
  • 標準ログファイル名 ← ファイル名を「&h_%Y%m%d_%H%M%S.txt」にしています。
  • 標準のログ保存先フォルダ ← ログファイルの保存先を指定します。
  • 自動的にログ採取を開始する ← チェックを入れます。
  • タイムスタンプ ← チェックを入れます。

【Tera Term】【コピペでできる】便利なマクロ(自動ログイン)と自動ログローテートの設定手順【teraterm】

 

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

 

 

 

マクロを実行すると以下のように自動的にログファイルが作成されます。

【Tera Term】【コピペでできる】便利なマクロ(自動ログイン)と自動ログローテートの設定手順【teraterm】

 

 

ログファイルの中を開くと以下のようになっています。

タイムスタンプが付いているので後からいつどのコマンドを実行したのかがすぐに分かります。

[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
[2018-11-11 17:53:35.955] [ec2-user@ip-172-31-38-38 ~]$ screen
[2018-11-11 17:53:36.005] [ec2-user@ip-172-31-38-38 ~]$ echo screenコマンド実行します。
[2018-11-11 17:53:36.052] screenコマンド実行します。
[2018-11-11 17:53:36.052] [ec2-user@ip-172-31-38-38 ~]$ echo screen -lsコマンドでセッションを確認可能です 。。
[2018-11-11 17:53:36.087] screen -lsコマンドでセッションを確認可能です。
[2018-11-11 17:53:36.087] [ec2-user@ip-172-31-38-38 ~]$ ls
[2018-11-11 17:53:38.970] [ec2-user@ip-172-31-38-38 ~]$ ls
[2018-11-11 17:53:39.952] [ec2-user@ip-172-31-38-38 ~]$ ls -l
[2018-11-11 17:53:43.147] total 0
[2018-11-11 17:53:43.147] [ec2-user@ip-172-31-38-38 ~]$ 

 

 

 

 

 

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

AlphaOmega Captcha Medica  –  What Do You See?
     
 

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください