-
Notifications
You must be signed in to change notification settings - Fork 0
/
77a-getstats
39 lines (32 loc) · 1.35 KB
/
77a-getstats
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/bash
# getstats - Every 'n' minutes, grabs netstats values (via crontab).
logfile="/Users/taylor/.netstatlog" # change for your configuration
temp="/tmp/getstats.$$.tmp"
trap "`which rm` -f $temp" 0
if [ ! -e $logfile ] ; then # first time run?
touch $logfile
fi
( netstat -s -p tcp > $temp
# Check your log file the first time this is run: some versions of netstat
# report more than one line, which is why the “| head -1” is used here.
sent="$(grep 'packets sent' $temp | cut -d\ -f1 | sed
's/[^[:digit:]]//g' | head -1)"
resent="$(grep 'retransmitted' $temp | cut -d\ -f1 | sed 's/[^[:digit:]]//g')"
received="$(grep 'packets received$' $temp | cut -d\ -f1 | \
sed 's/[^[:digit:]]//g')"
dupacks="$(grep 'duplicate acks' $temp | cut -d\ -f1 | \
sed 's/[^[:digit:]]//g')"
outoforder="$(grep 'out-of-order packets' $temp | cut -d\ -f1 | \
sed 's/[^[:digit:]]//g')"
connectreq="$(grep 'connection requests' $temp | cut -d\ -f1 | \
sed 's/[^[:digit:]]//g')"
connectacc="$(grep 'connection accepts' $temp | cut -d\ -f1 | \
sed 's/[^[:digit:]]//g')"
retmout="$(grep 'retransmit timeouts' $temp | cut -d\ -f1 | \
sed 's/[^[:digit:]]//g')"
/bin/echo -n "time=$(date +%s);"
/bin/echo -n "snt=$sent;re=$resent;rec=$received;dup=$dupacks;"
/bin/echo -n "oo=$outoforder;creq=$connectreq;cacc=$connectacc;"
echo "reto=$retmout"
) >> $logfile
exit 0