サーバー上のログ収集ってなかなか大変ですよね。
そこで、サーバー上からローカルPCに対して、ログを転送するサンプルを紹介します。

今回の例では、CentOS等Linux系の代表的なシステムログである「/var/log/messages」ログ
を出力する例を紹介いたします。

まず、root権限になりましょう。

「/var/log/messages」を見てみると、デフォルトでは権限が読み取り権限しか
ないので、変更しましょう。

下記のコマンドを打つことによって、全てのユーザーに書き込み権限を付与しましょう。

chmod 666 /var/log/messages

スポンサーリンク


これで準備は完了しましたので、下記のサンプルをローカルに保存して、
実行しましょう。

;接続先ホスト
HOSTADDR = '192.168.10.6'

;ユーザ名
USERNAME = 'test'

;パスワード設定
PASSWORD = 'testpass' 

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

;ローカルのファイルを削除
filedelete "C:\work\messages"

;ファイルをローカルに抽出
wait '$' '#'
scprecv "/var/log/messages" "C:\work\messages"


;接続
connect COMMAND

;マクロ終了 
end

上記、マクロを実行することにより、ローカルの「C:\work」の直下に、
下記のようにシステムログを保存することができました。

ちゃんと中身も閲覧することができますね。

ポイントとしては、なんと言っても「scprecv」コマンドですね。
scpプロトコルにより転送をすることができるコマンドで下記のように使います。

scprecv 転送元ファイル 転送先(ファイル名まで指定)

また、同じファイル名を保存しようとした場合は、TeraTerm上で確認メッセージが
出てきてしまいますので、「日付をつける方法」や「事前にファイルを削除する方法」等
がありますが(まあ、両立させることはできますが…。)、今回はわかりやすさを重視して、
下記のように事前にファイルを削除しております。

filedelete “C:\work\messages”

「Teratermを複数起動するマクロ」と組み合わせれば、一気に複数サーバーからシステムログを抽出するマクロを組むこともできますね。それはまた別の記事で記述したいと思います!

Teratermを複数起動するマクロ

スポンサーリンク