Mam nadzieję, że ostatnia modyfikacja skryptu:
Kod: Zaznacz cały
#!/bin/sh
DATE=`vnstat --dumpdb | grep "d;" | awk 'BEGIN { FS = ";" } ; {print $3}'`
MB_RECEIVED=`vnstat --dumpdb | grep "d;" | awk 'BEGIN { FS = ";" } ; {print $4}'`
MB_SENT=`vnstat --dumpdb | grep "d;" | awk 'BEGIN { FS = ";" } ; {print $5}'`
KB_RECEIVED=`vnstat --dumpdb | grep "d;" | awk 'BEGIN { FS = ";" } ; {print $6}'`
KB_SENT=`vnstat --dumpdb | grep "d;" | awk 'BEGIN { FS = ";" } ; {print $7}'`
MB_RECEIVED_TODAY=`vnstat --dumpdb | grep "d;0" | awk 'BEGIN { FS = ";" } ; {print $4}'`
MB_SENT_TODAY=`vnstat --dumpdb | grep "d;0" | awk 'BEGIN { FS = ";" } ; {print $5}'`
PAYOFF_DAY=19
LIMIT=10000
YEAR=`date +%Y`
MONTH=`date +%m`
DAY=`date +%d`
TODAY=`date +%Y%m%d`
LAST_YEAR=$YEAR
if [ $DAY -le $PAYOFF_DAY ]; then
LAST_MONTH=`expr $MONTH - 01`
if [ $LAST_MONTH -lt 10 ]; then
LAST_YEAR=`expr $LAST_YEAR \* 10`
fi
else
LAST_MONTH=`expr $MONTH`
fi
if [ $LAST_MONTH -eq 0 ]; then
LAST_YEAR=`expr $YEAR - 1`
LAST_MONTH=12
fi
if [ $DAY -ge $PAYOFF_DAY ]; then
MONTH=`expr $MONTH + 1`
if [ $MONTH -gt 12 ]; then
MONTH=01
YEAR=`expr $YEAR + 1`
fi
fi
LAST_PAYOFF=$LAST_YEAR$LAST_MONTH$PAYOFF_DAY
THIS_PAYOFF=$YEAR$MONTH$PAYOFF_DAY
days=0
for each_date in $DATE
do
day=`date -d @$each_date "+%Y%m%d"`
if [ $day -gt $LAST_PAYOFF ]; then
days=`expr $days + 1`
fi
done
var=0
for each_day in $MB_RECEIVED
do
if [ $var -lt $days ]; then
MB_RECEIVED_INTERNET=`expr $MB_RECEIVED_INTERNET + $each_day`
fi
var=`expr $var + 1`
done
var=0
for each_day in $KB_RECEIVED
do
if [ $var -lt $days ]; then
KB_RECEIVED_INTERNET=`expr $KB_RECEIVED_INTERNET + $each_day`
fi
var=`expr $var + 1`
done
var=0
for each_day in $MB_SENT
do
if [ $var -lt $days ]; then
MB_SENT_INTERNET=`expr $MB_SENT_INTERNET + $each_day`
fi
var=`expr $var + 1`
done
var=0
for each_day in $KB_SENT
do
if [ $var -lt $days ]; then
KB_SENT_INTERNET=`expr $KB_SENT_INTERNET + $each_day`
fi
var=`expr $var + 1`
done
KB=`expr $KB_RECEIVED_INTERNET + $KB_SENT_INTERNET`
KB_MB_INSIDE=`expr $KB / 1000`
KB=`expr $KB % 1000`
MB=`expr $MB_RECEIVED_INTERNET + $MB_SENT_INTERNET + $KB_MB_INSIDE`
LEFT_TRANSFER=`expr $LIMIT - $MB`
MIESIAC=`expr $LAST_MONTH % 7`
DLUGOSC=`expr $MIESIAC % 2`
if [ $DLUGOSC -eq 1 ]; then
NO_OF_DAYS=31
else
NO_OF_DAYS=30
fi
if [ $LAST_MONTH -eq 2 ]; then
NO_OF_DAYS=28
fi
if [ $DAY -gt $PAYOFF_DAY ]; then
PAST_DAYS=`expr $DAY - $PAYOFF_DAY`
else
PAST_DAYS=`expr $NO_OF_DAYS - $PAYOFF_DAY + $DAY`
fi
LEFT_DAYS=`expr $NO_OF_DAYS - $PAST_DAYS + 1`
LIMIT_PER_DAY=`expr $LEFT_TRANSFER / $LEFT_DAYS`
SREDNIO=`expr $MB / $PAST_DAYS`
echo "dzień $PAST_DAYS: [$MB_RECEIVED_TODAY MiB / $MB_SENT_TODAY MiB]"
echo "pobrano $MB MiB"
echo "zostało $LEFT_TRANSFER MiB; $LIMIT_PER_DAY MiB/dzień"