Tera Term(テラターム)のマクロ機能等で、自動ログ取得設定を行っていると、いつの間にかログが溜まってしまい、いざ必要な時にログファイルが見つからない事があります。

ここでは、自動で取得するログを整理(保存先を操作)する方法をご紹介したいと思います。

指定のフォルダ配下に、年月(201110)フォルダを自動で作成し、取得したログを年月別に整理して保存していきます。(過去ログを整理・圧縮するのも楽になりますね)
 年月別にログを整理

マクロでログ取得を制御しますので、「設定」メニューから「その他の設定」を選択し「ログ」タブより「自動的にログ採取を開始する」のチェックは外しておいてください。

その他の機能の特徴としては、以下のようになっています。

  1. 接続するホスト情報はメニューから入力
  2. 接続ユーザは固定で設定
  3. 初回ログイン時は、パスワード入力が必要。次回からはパスワード入力無しでログイン。(パスワードはファイルに暗号化して保存)
  4. ログは指定のフォルダ配下に、年月(例201110)フォルダを作成して保存

スポンサーリンク

SSH自動ログ取得マクロ

;=================================================
; Filename    : Log-arrangement_01.ttl
; Description : Auto login & Log save with teraterm
; Author      : JUNZOU
; Created     : 2011/10/10
; modified    : 
;=================================================
;; ログ保存場所指定
LOG_PATH = 'C:\teraterm\'
;; ユーザ名指定
USERNAME = 'ユーザ名'
;; パスワードファイル指定
PASSFILE = 'C:\password.dat'
;=================================================
;; ①接続先ホスト名 or IPアドレス入力
inputbox '[Hostname] or [IP Address]' 'Please input the hostname or an IP address.'
HOSTNAME = inputstr

;; ②入力確認(ホスト名 or IPアドレスの入力が無い場合は終了)
strcompare HOSTNAME ''
if result = 0 then
    messagebox 'The hostname or IP address is not input.' 'Input error'
    end
endif

;; ③パスワード取得 
getpassword PASSFILE USERNAME PASSWORD

;; ④ログファイル保存フォルダの設定
LOG_FILE = LOG_PATH
getdate DIR_NAME '%Y%m'
strconcat LOG_FILE DIR_NAME

;; ⑤ログ保存フォルダの存在確認(無ければ作成:作成失敗は終了)
foldersearch LOG_FILE
if result = 0 then
    foldercreate LOG_FILE
    if result <> 0 then
        messagebox 'A folder could not be made.' 'Making error'
        end
    endif    
endif

;; ⑥ログファイル名の設定
getdate LOG_NAME '\%Y%m%d_%H%M%S_&h.log'
strconcat LOG_FILE LOG_NAME

;; ⑦SSH接続コマンド作成
COMMAND = HOSTNAME
strconcat COMMAND ':22 /ssh /2 /auth=password /user='
strconcat COMMAND USERNAME
strconcat COMMAND ' /passwd='
strconcat COMMAND PASSWORD

;; ⑧SSH接続
connect COMMAND

;; ⑨接続出来ない場合はメッセージを表示し終了
if result <> 2 then
    messagebox 'It could not be connected.' 'Connected error'
    end
endif

;; ⑩10秒以内にプロンプトが表示されない場合終了
timeout = 10
wait '$' '#'
if result = 0 then
    disconnect
    end
endif

;;⑪ログ取得開始
logopen LOG_FILE 1 1
sendln 'hostname'
wait '$' '#'

;; ⑫マクロ終了
end

マクロ内容の解説

①接続先ホスト入力

接続先ホスト入力エリアでは、入力ダイアログボックスを表示し、接続先ホストのIPアドレス、またはホスト名(名前解決が必要)を入力します。
接続先ホスト情報入力ダイアログボックス

②接続先ホスト入力確認

ホスト入力確認エリアでは、何も入力しないで「OK」を押してないかの確認を行っています。何も入力されていない場合は、以下のエラーを表示しマクロを終了します。
入力エラーポップアップ

③パスワード取得

パスワード取得では、接続する際の対象ホストに対するパスワードを[getpassword]コマンドで指定したパスワードファイルより読み込みを行っています。

[getpassword]コマンドの書式(△はスペース)

getpassword△ファイル名△パスワード識別子△文字列変数

接続するユーザ名に紐付くパスワードが保存されていない場合、パスワードを入力するメニューが表示されます。
パスワード入力画面

一度ログインするとパスワードが指定したファイルに暗号化して保存され、次回からパスワードの入力無しでログインできるようになります。

ファイルの中に、こんな感じで保存されています。
=====================================
[Password]
Eb&x~82e)hzOU">test-user=J@t’14>Eb&x~82e)hzOU!
=====================================

④ログファイル保存フォルダの設定

ログファイルの保存先のフルパスを設定します。

変数「LOG_FILE」に、[strconcat]コマンドを使用し文字を継ぎ足していく事で保存先フォルダの文字列を作成しています。

[getdate]コマンドを使用し、年月(201110)の文字列を作成しています。

変数「LOG_FILE」には、「C:\teraterm\201110」のような文字列がセットされます。

⑤ログ保存フォルダの存在確認(無ければ作成:作成失敗は終了)

[foldersearch]コマンドで、項番④で作成したフォルダが存在するかを確認し、存在しない場合は、フォルダを作成します。

⑥ログファイル名の設定

ログファイル名の設定部分では、保存するログファイル名の文字列、及び保管するファイルのフルパスを作成しています。

[getdate]コマンドで、その時点の日付・時刻を取得し、「YYYYMMDD_HHMMSS_ホスト名.log」の形式で変数「LOG_NAME」に代入してます。

また[strconcat]コマンドを使用し、変数「LOG_FILE」にログファイルのフルパスを指定しています。最終的に以下のようになります。

C:\logs\YYYYMMDD_HHMMSS_ホスト名.log

フルパスを指定しない場合は「changedir」コマンドを使用し、書き込むディレクトリに移動してログ取得を開始する事も可能です。

⑦コマンド組立て/⑧接続

⇒ コマンド組立て・接続のエリアの解説はこちらを参照

⑨接続判定1/⑩接続判定2

⇒ 接続判定のエリアの解説はこちらを参照

⑪ログ取得開始

[logopen]コマンドで、ログ取得を開始します。

[logopen]コマンドの書式(△はスペース)

logopen△ファイル名△<binary flag>△<append flag>

<binary flag>
値が0のとき、受信した漢字、改行文字は変換されてファイルに書き込まれる。値が0以外のとき、受信した文字をすべてそのままファイルに書き込む。

<append flag>
値が0で、ファイルがすでに存在する場合、そのファイルは上書きされる。値が0以外で、ファイルがすでに存在する場合は、そのファイルに追記して書き込む。

⑫マクロ終了

自動ログインが完了するとマクロ機能を終了します。マクロ機能が終了しても接続したセッションは維持され、継続してコンソール操作が可能です。