分析ログファイルにシェルスクリプトを作成する[閉じる]

分析ログファイルにシェルスクリプトを作成する[閉じる]

ログファイルは次のとおりです。 -

Source=Mobile
IP=189.23.45.01
STATUS=SUCCESS
TIME=10 sec

Source=Desktop
IP=189.23.34.23
STATUS=FAIL
TIME=101 sec

Source=Mobile
IP=189.23.34.23
STATUS=FAIL
TIME=29 sec

ファイルはこのように続きます。

質問:

  1. FAILステータスのIPをお探しですか?
  2. ステータスが「成功」であるすべてのリクエストを見つけるのにかかる平均時間は何ですか?
  3. モバイルデバイス経由のログイン数と所要時間をリストします。

答え1

3つの質問をしました。最初の質問から始めましょう。同じ基本構造を使用して他の2つの質問を直接解決する必要があります(このサイトには、平均化などの数値処理にAwkを使用する多くの例があります)。

awkを使う短絡モード(レコード区切り記号の設定を解除する)と(改行)を使用してRSレコードをフィールドに分割します。=\n

$ awk -vRS= -F'[=\n]' '/STATUS=FAIL/{print $4}' file.log
189.23.34.23
189.23.34.23

答え2

トリムされていないバージョンでは、データが次に含まれていると仮定すると、Bashスクリプトは次のように見えますdatafile

#!/bin/bash

printf "IPs where status is fail:\n"
grep -z -oP 'IP=\K.*\n(?=STATUS=FAIL)' datafile

printf "Avg time taken by all requests where status is 'success':\n"
grep -z -oP 'STATUS=SUCCESS\nTIME=\K\d+' datafile | \
  awk '{ total += $1; count++ } END { print ( count == 0 ? "NaN" : total/count); }'

printf "Number of logins (successful and failed) via Mobile:\n"
grep -c 'Source=Mobile' datafile

簡単な説明:

  • Q2)平均時間計算:このgrepコマンドは時間値を抽出します(すべて秒単位であると仮定)。値をawkコマンドにパイプして平均を計算し、その平均を印刷します。

答え3

read -p "Lets Give File Name , placed in the same dir: " file ; 
echo " Ques : Find the Number of IP which failed "
echo "Ans: "

cat "${file}".txt | grep -i STATUS=FAIL -B1 | grep -i IP | awk -F '=' '{print $NF}'
#cat "${file}".txt | grep -i STATUS=SUCCESS -A1 | grep -i Time | awk -F '=' '{print $NF}' &> clear2.txt

echo "Ques : Find the avg of success time"
echo "Ans : "

cat "${file}".txt | grep -i STATUS=SUCCESS -A1 | grep -i Time | awk -F '=' '{print $2}' | awk '{print $1}' &> clear2.txt
avgtime=0
i=0
for x in `cat clear2.txt`
do  
    i=$(($i + 1))
    avgtime=$(($avgtime +$x))
    echo "avg time after ${i} iteration is :${avgtime}"
    y=$(($x))
done
#echo "${x}"
#echo "${y}"
avgtime=$(($avgtime/$i))

echo "THe avg time is : ${avgtime}"

echo "Ques : What is the Number of time mobile was tried to login"

echo "Ans :"

cat testfile.txt | grep -i Mobile | wc -l

関連情報