###前提・実現したいこと
AWS上にAmazonLinuxで作成したサーバがあります。
このサーバのmaillogから指定期間(たとえば24時間分)のログを取得しようとしています。
以下の問題が出ておりますが、スクリプトでログの取得ができないでしょうか。
###発生している問題・エラーメッセージ
■問題
1.ログの時刻はJSTではない
確認したところログの時刻がUTCになっているようで、9時間時刻がずれていました。
その為、「grep Dec 6」としても、欲しい期間のログが取れていませんでした。
※dateコマンドでは日本の時刻になっておりました。
なお、時刻修正の為のサーバ再起動はできない縛りがあります。
2.ログファイルがローテーションされる
1週間毎にローテーションされるので、取得したい期間によっては2ファイルとかにわかれてしまう。
###該当のソースコード
bash
1grep "Dec 5" /var/log/maillog > /tmp/maillog1 2grep "Dec 6" /var/log/maillog > /tmp/maillog2
■追記1、頂いた回答などを参考に自分なりにスクリプトを作ってみました。
bash
1#!/bin/bash 2 3file_path="/tmp/test-maillog1.txt" 4 5#ファイルがあれば削除 6if [ -e ${file_path} ]; then 7 rm -f ${file_path} 8fi 9 10#引数なければエラー 11if [ "$1" = "" ] 12then 13 echo "no argument" 14 exit 1 15fi 16 17 start=${1} 18 end=0 19 while [[ $start -ge $end ]]; do 20 21 if [ $start -eq 0 ]; then 22 grep "`LANG=C date -u +"%c" | sed -e 's/^....//g' | sed -e 's/[0-9][0-9][0-9][0-9]//g' | sed -e 's/:[0-9][0-9]:[0-9][0-9] //g'`" /var/log/maillog* >> ${file_path} 23 break 24 else 25 dateform=`LANG=C date -u -d "${start} hours ago" +"%c"` 26 grep "`LANG=C date -u -d "${start} hours ago" +"%c" | sed -e 's/^....//g' | sed -e 's/[0-9][0-9][0-9][0-9]//g' | sed -e 's/:[0-9][0-9]:[0-9][0-9] //g'`" /var/log/maillog* >> ${file_path} 27 fi 28 start=$(($start-1)) 29 done
###試したこと
今のところは「grep Dec 5」「grep Dec 6」の結果のmaillogをローカルに持ってきて、取得期間から開始と終了の時間のログまでを手動で切りとっています。
■追記1
スクリプトを作成してみましたが、これだとファイルにまたがっていてもログが取れるのですが、先頭に「/var/log/maillog:」が付きます。
/var/log/maillog:Dec 7 03:54:13 ip-xx-xx-xx-xx postfix/qmgr[12345]: xxxxxxxxx: removed
ログファイル名は「maillog」「maillog-20171203」のようになっているのですが、削除しようとしてsedの正規表現で引っかけて削除しようとしましたが、削除できませんでした。
bash
1cat /tmp/test-maillog1.txt | sed -e 's//var/log/maillog(-[0-9]{8})://' 2cat /tmp/test-maillog1.txt | sed -e 's//var/log/maillog(-[0-9]{8})://' 3cat /tmp/test-maillog1.txt | sed -e 's//var/log/maillog(-[0-9]\{8\})://'
どのようにすれば先頭の「/var/log/maillog:」、「/var/log/maillog-yyyymmdd:」の文字列を削除できるでしょうか。
■追記2
grep の部分で-hを付けることで先頭の「/var/log/maillog:」、「/var/log/maillog-yyyymmdd:」の文字列が出力されなくなりました。
回答2件
あなたの回答
tips
プレビュー