Tera Termマクロ等で自動ログ取得設定を行っていると、いつの間にかログが溜まってしまい、いざ必要な時に対象のログファイルが見つからない事が多々あります。
そこでここでは、自動で取得するログを整理(保存先を操作)する方法をご紹介したいと思います。 前回の『Tera Term自動ログ取得マクロ-ログ整理版(年月別)』の応用版になります。
指定のフォルダ配下に、接続時に入力する「ホスト名 or IPアドレス」のフォルダを自動で作成し、取得したログを、ホスト別に整理して保存していきます。下記例では、IPアドレスで接続し、IPアドレスのフォルダが作成されています。
マクロ側でログ取得を制御しますので、「設定」メニューから「その他の設定」を選択し、「ログ」タブより「自動的にログ採取を開始する」のチェックは外しておいてください。
その他の機能の特徴としては、以下のようになっています。
- 接続するホスト情報はメニューから入力
- 接続ユーザは固定で設定
- パスワードは初回ログイン時は入力が必要。次回からはパスワード入力無しでログイン。(パスワードはファイルに暗号化して保存)
- ログは指定のフォルダ配下に、ホスト名(IPアドレス)のフォルダを作成し整理して保存
SSH自動ログ取得マクロ
;===================================================== ; Filename : Log-arrangement_02.ttl ; Description : Auto login & Log save with teraterm ; Author : JUNZOU ; Created : 2011/10/16 ; 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 strconcat LOG_FILE HOSTNAME ;; ⑤ログ保存フォルダの存在確認(無ければ作成:作成失敗は終了) 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]コマンドを使用し文字を継ぎ足していく事で、保存先フォルダの文字列を生成しています。
まず変数「LOG_FILE」に「LOG_PATH」をセットし、「strconcat LOG_FILE HOSTNAME」でホスト名(IPアドレス)を追加しています。
最終的に変数「LOG_FILE」には「C:\teraterm\111.222.333.444」のような文字列がセットされます。
⑤ログ保存フォルダの存在確認(無ければ作成:作成失敗は終了)
[foldersearch]コマンドで、項番④で作成したフォルダが存在するかを確認し、存在しない場合は、フォルダを作成します。
⑥ログファイル名の設定
ログファイル名の設定部分では、保存するログファイル名の文字列、及び保管するファイルのフルパスを作成しています。
[getdate]コマンドで、その時点の日付・時刻を取得し、「YYYYMMDD_HHMMSS_ホスト名.log」の形式で変数「LOG_NAME」に代入してます。
また[strconcat]コマンドを使用し、変数「LOG_FILE」にログファイルのフルパスを指定しています。最終的に以下のようになります。
C:\teraterm\YYYYMMDD_HHMMSS_ホスト名.log
フルパスを指定しない場合は「changedir」コマンドを使用し、書き込むディレクトリに移動してログ取得を開始する事も可能です。
⑦コマンド組立て/⑧接続
⑨接続判定1/⑩接続判定2
⑪ログ取得開始
[logopen]コマンドで、ログ取得を開始します。
[logopen]コマンドの書式(△はスペース)
logopen△[ファイル名]△<binary flag>△<append flag>
<binary flag>
値が0のとき、受信した漢字、改行文字は変換されてファイルに書き込まれる。値が0以外のとき、受信した文字をすべてそのままファイルに書き込む。
<append flag>
値が0で、ファイルがすでに存在する場合、そのファイルは上書きされる。値が0以外で、ファイルがすでに存在する場合は、そのファイルに追記して書き込む。
⑫マクロ終了
自動ログインが完了するとマクロ機能を終了します。マクロ機能が終了してもセッションは維持され、継続してコンソール操作が可能です。