[Linux] UDP 패킷 개수 (오류 패킷) 구하기 Develop Tip

지난번 Linux에서 UDP 패킷과 큐의 필요성에 대해서 생각해 보았는데,
이번에는 아주 간단한 쉘 스크립트로 현재 받고 있는 UDP 패킷 개수와 
혹시라도 시스템에서 UDP가 유실될 경우 그 유실되는 패킷의 개수를
1분마다 구해서 최근 1분동안 받은 UDP 패킷 개수와 오류 패킷 개수를 
구하는 것을 할 필요가 생겼습니다.

이런 경우 다음과 같이 간단하게 작성하면 됩니다.


#!/bin/bash

LCNT_R=-1
LCNT_E=-1
while [ 1 ];do
NOW=$(date +%Y%m%d-%H%M%S)
CCNT_R=$(netstat -su | sed -ne '/packets received/p' | awk '{print $1}')
CCNT_E=$(netstat -su | sed -ne '/packet receive errors/p' | awk '{print $1}')
if [ $LCNT_R -gt -1 ];then
DIFF_R=$(($CCNT_R - $LCNT_R))
DIFF_E=$(($CCNT_E - $LCNT_E))
echo "[$NOW] $DIFF_R UDP packets received ($DIFF_E errors) during last 1 minutes."
else
echo "[$NOW] starting get UDP packet counts every 1 minutes."
fi
LCNT_R=$CCNT_R
LCNT_E=$CCNT_E
sleep 60
done



이 코드를 udpstat.sh 라고 저장한다음,

$ chmod +x udpstat.sh
라고 실행 권한을 주고,

$ ./udpstat.sh
라고 실행시키면...

[20150909-135551] starting get UDP packet counts every 1 minutes.
[20150909-135651] 200000 UDP packets received (0 errors) during last 1 minutes.
...
[20150909-140651] 0 UDP packets received (0 errors) during last 1 minutes.
[20150909-140751] 290861 UDP packets received (41104 errors) during last 1 minutes.
[20150909-140851] 569382 UDP packets received (0 errors) during last 1 minutes.
[20150909-140951] 198654 UDP packets received (0 errors) during last 1 minutes.
[20150909-141051] 0 UDP packets received (0 errors) during last 1 minutes.
[20150909-141151] 467729 UDP packets received (0 errors) during last 1 minutes.
[20150909-141251] 532271 UDP packets received (0 errors) during last 1 minutes.
[20150909-141351] 0 UDP packets received (0 errors) during last 1 minutes.
...
라고 결과를 나타냅니다.


어느분께는 도움이 되셨기를 ...



덧글

댓글 입력 영역

구글애드텍스트