2016-12-20 10 views
0

私のログファイルの1つから特定の文字列 "Server-OUT"をgrepしようとしています。 18倍以上になるとメールをポップアップしてくれて、それが働いています。今時間を得るためにデータを解析する方法エラーコードと一緒にソートされたスタンプ

#!/bin/bash 
ERRCOUNT=$(grep SERVER-OUT /licenses/CapSync30/license_logs/770 |tail -100 | wc -l) 
HOSTN="`/bin/hostname`" 
if [ "$ERRCOUNT" -ge 18 ] 
then 
echo "SERVER-OUT Error Count is $ERRCOUNT on $HOSTN" | mailx -s "Urgent !!! Licence Admin Please Investigate the Server $HOSTN for any Issues" [email protected] 
fi 

、ログファイルは、iはまず列が時間を持って、第1および第2の列を、削減したい以下のようなフォーマットを、持っていると私はそれが正確に13」として解析することにしたいよう: 53 "、この" Server-out "が13:53の間に10回以上繰り返し出現した場合、そのデータを含む数のメールを私に送ってください。

夜01時53分21秒(メタ)SERVER-OUT:私は、タイムスタンプ(と一緒に最初の&第二のカラムをフィルタ処理しようとしているものを下記(86)メッセージの送信に失敗しました

時間:分)SERVER-OUTメッセージでも、ちょうどあなたが何をしようとしてオフにしないで...それが今のように私の心の中に回転

$ awk '/SERVER-OUT/ {print $1, $3}' /licenses/CapSync30/license_logs/770 
13:53:21 SERVER-OUT: 
13:54:06 SERVER-OUT: 

$ awk '/SERVER-OUT/ {print $1, $3}' /licenses/CapSync30/license_logs/770 | cut -d: -f1,2 | tail -2 
13:53 
13:54 

答えて

2

を取得するために自分自身をねじ込み、おそらくあなたのアイデアを与えるだろう

$ echo "13:53:21 (meta) SERVER-OUT: Failed to send the message(86)" | 
    awk '/SERVER-OUT/{split($1,t,":"); print t[1]":"t[2],$3}' 

13:53 SERVER-OUT: 

または

$ ... | awk '/SERVER-OUT/{print substr($1,1,5),$3}' 

13:53 SERVER-OUT: 

$ ... | awk '/SERVER-OUT/{counter[substr($1,1,5),$3]++} 
       END   {for(k in counter) if(counter[k]>10) exit 1}' 

+0

...終了ステータスをチェックし、通知を送信...第二の代替を使用して、抽出された値にカウンタを設定します@ karafa、 "13:53 SERVER-OUT:" < - が10回以上繰り返されたら、[email protected]にメールを送ってほしい。 – krock1516

+0

@Karnあなたが本当に望んでいるのは、1分で10個以上のSERVER-OUTがある場合はメールを送信することです。なぜあなたはそう言っていないのですか:-) – Jens

+0

@Jensそれは本当に私が欲しいです。わかった 。 – krock1516

関連する問題