Traceroute 로그에서 350ms를 찾으십니까?

Traceroute 로그에서 350ms를 찾으십니까?

그래서 다음과 같은 로그를 생성하는 bash 스크립트가 있습니다.

traceroute to -------, 30 hops max, 60 byte packets
1  router.Belkin (192.168.2.1)  2.275 ms  2.263 ms  2.249 ms
2  -------  16.961 ms  21.060 ms  21.069 ms
3  -------  21.025 ms  21.009 ms  20.996 ms

ms 부분을 필터링하여 그 중 350ms를 초과하는 부분이 있는지 확인하고 싶습니다. 그렇다면 전체 로그 파일이 제목 "..."과 본문 "..."을 포함하여 내 이메일로 전송됩니다. 도움이 되셨나요?
감사합니다!

답변1

여기 스크립트가 있습니다. 첫 번째 인수로 로그 파일 이름을 제공합니다. 350ms가 넘는 시간을 확인합니다. 해당 시간이 발견되면 이메일을 보냅니다.

#!/bin/sh
logfile="$1"
flag="$(awk -v RS=" " '$1 == "ms" && last > 350 {flag=1} {last=$1} END{print flag}' "$logfile")"
[ "$flag" ] && mail you@host -s "Over 350ms Report for $logfile" <"$logfile"

이를 위해서는 시스템에 메일이 제대로 설치 및 구성되어 있어야 합니다.

결합된 스크립트

위의 내용은 다음 스크립트와 결합될 수 있습니다.스크립트가 계획대로 파일을 반복하지 않습니다.다음과 같이:

#!/bin/sh
n=
while true
do
    fname=~/"Scripts/logs/trace$n.log"
    [ -f "$fname" ] || break
    n=$(($n+1))
done
traceroute google.com >"$fname"
flag="$(awk -v RS=" " '$1 == "ms" && last > 350 {flag=1} {last=$1} END{print flag}' "$fname")"
[ "$flag" ] && mail you@host -s "Over 350ms Report for $fname" <"$fname"

협력 형태

다음의 스크립트를 가정해 보겠습니다.스크립트가 계획대로 파일을 반복하지 않습니다.별도로 운영되고 있습니다. 그런 다음 >350ms 지연에 대해 생성된 파일을 검사하는 가능한 스크립트는 다음과 같습니다.

#!/bin/sh
for logfile in ~/Scripts/logs/trace*.log
do
    flag="$(awk -v RS=" " '$1 == "ms" && last > 350 {flag=1} {last=$1} END{print flag}' "$logfile")"
    [ "$flag" ] && mail you@host -s "Over 350ms Report for $logfile" <"$logfile"
done

이동 및 삭제가 가능한 협력 양식

#!/bin/sh
otherdir=~/"Scripts/logs-with-long-delays/"
for logfile in ~/Scripts/logs/trace*.log
do
    flag="$(awk -v RS=" " '$1 == "ms" && last > 350 {flag=1} {last=$1} END{print flag}' "$logfile")"
    if [ "$flag" ]
    then
        mail you@host -s "Over 350ms Report for $logfile" <"$logfile"
        mv "$logfile" "$otherdir"
    else
        rm "$logfile"
    fi
done

관련 정보