#!/bin/bash
# Skrypt getstats gromadzący dane dostarczane przez polecenie
# netstat wywoływane co określoną liczbę minut za pomocą programu
# cron.

logfile="/home/admin/netstat.log"   # Zmień odpowiednio do swojego systemu.
temp="/tmp/getstats.$$.tmp"

trap "`which rm` -f $temp" 0

if [ ! -e $logfile ] ; then     # Pierwsze uruchomienie?
  touch $logfile
fi
( netstat -s -p tcp > $temp

# Sprawdzenie pliku przy pierwszym uruchomieniu skryptu. Niektóre
# wersje polecenia netstat wyświetlają kilka wierszy danych. Dlatego tutaj
# użyte jest polecenie "| head -1".

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')"

echo  -n "time=$(date +%s);"
echo -n "snt=$sent;re=$resent;rec=$received;dup=$dupacks;"
echo -n "oo=$outoforder;creq=$connectreq;cacc=$connectacc;"
echo "reto=$retmout"

) >> $logfile

exit 0
