История изменений
Исправление nerve, (текущая версия) :
вот готовый костыль, который шлет на мыло табличку сколько кто заюзал интернета (исключая трафик в другую сеть по впн) за предыдущий месяц и сколько было коннектов к впн.
тебе надо только установить nfsen, настроить коллектор и кинуть скрипт в крон на первый день месяца.
FILE5 - это заголовок хтмл.
#!/bin/bash
SHELL=/bin/bash
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/sbin:/usr/local/bin
DATE=/usr/local/bin/gdate
FILE1=/tmp/$$.nfsen
FILE2=/tmp/result.1
FILE3=/tmp/result.2
FILE4=/tmp/result.3
FILE5=/root/nfsen.1
FILE6=/tmp/result.html
FILE7=/root/nfsen.2
FILE8=/tmp/result.4
FILE9=/tmp/result.5
MonthPrev=`$DATE --date="last month" +%b`
MonthCurr=`$DATE +%m`
MonthNum=`$DATE --date="last month" +%m`
NFD_DIR=/var/db/nfsen/profiles-data/live/upstream1/2014/$MonthNum
VPN1=`grep "Connection Initiated with" /var/log/openvpn/access.log | grep $MonthPrev | wc -l`
#VPN1=`grep "Connection Initiated with" /var/log/openvpn/access.log | grep Apr | wc -l`
let "VPN2 = VPN1 / 2"
echo "<tr><td><b>VPN connections in $MonthPrev:</b></td><td>$VPN2</td></tr>" > $FILE2
echo "<tr><td></td><td></td></tr>" >> $FILE2
echo "<tr><td><b>Person</b></td><td><b>Traffic</b></td></tr>" >> $FILE2
#nfdump -M $NFD_DIR -R $NFD_START:$NFD_END \
nfdump -R $NFD_DIR -a -A srcip -o 'fmt:%sap %byt' \
'(SRC NET 192.168.5.0/24) and (not DST NET 192.168.2.0/24)' | \
sed -e '1d' -e '/^Time window/d' -e '/^Total flows/d' -e '/^Sys:/d' \
-e 's/^Summary:*/&/w /tmp/result.4' -e '/^Summary:/d' -e 's/:0//g' \
-e 's/^[ \t]*//' -e '/^[0-9. ]*$/d' > $FILE1
awk -F,\ '{print $2}' $FILE8 | \
sed 's/total bytes: \([0-9.G ]*\)/<tr><td><b>Total:<\/b><\/td><td><b>\1<\/b><\/td><\/tr>/' > $FILE9
declare -A IPName
IPName[192.168.5.1]='user1'
IPName[192.168.5.11]='user2'
.
.
while read IP TRAF; do
if [ "${IPName[$IP]}" ]; then
echo "<tr><td>${IPName[$IP]}</td><td>$TRAF</td></tr>" >> $FILE3
#else
#echo "<tr><td>$IP</td><td>$TRAF</td></tr>" >> $FILE3
fi
done < $FILE1
sort $FILE3 > $FILE4
cat $FILE5 $FILE2 $FILE4 $FILE9 > $FILE6
mutt -s "Traffic report" -a $FILE6 -- me@domain.com < $FILE7
rm -f $FILE1 $FILE2 $FILE3 $FILE4 $FILE6 $FILE8 $FILE9 > /dev/null 2>&1
Исходная версия nerve, :
вот готовый костыль, который шлет на мыло табличку сколько кто заюзал интернета (исключая трафик в другую сеть по впн) за предыдущий месяц и сколько было коннектов к впн.
тебе надо только установить nfsen, настроить коллектор и кинуть скрипт в крон на первый день месяца.
FILE5 - это заголовок хтмл.
#!/bin/bash
SHELL=/bin/bash
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/sbin:/usr/local/bin
DATE=/usr/local/bin/gdate
FILE1=/tmp/$$.nfsen
FILE2=/tmp/result.1
FILE3=/tmp/result.2
FILE4=/tmp/result.3
FILE5=/root/nfsen.1
FILE6=/tmp/result.html
FILE7=/root/nfsen.2
FILE8=/tmp/result.4
FILE9=/tmp/result.5
MonthPrev=`$DATE --date="last month" +%b`
MonthCurr=`$DATE +%m`
MonthNum=`$DATE --date="last month" +%m`
NFD_DIR=/var/db/nfsen/profiles-data/live/upstream1/2014/$MonthNum
VPN1=`grep "Connection Initiated with" /var/log/openvpn/access.log | grep $MonthPrev | wc -l`
#VPN1=`grep "Connection Initiated with" /var/log/openvpn/access.log | grep Apr | wc -l`
let "VPN2 = VPN1 / 2"
echo "<tr><td><b>VPN connections in $MonthPrev:</b></td><td>$VPN2</td></tr>" > $FILE2
echo "<tr><td></td><td></td></tr>" >> $FILE2
echo "<tr><td><b>Person</b></td><td><b>Traffic</b></td></tr>" >> $FILE2
#nfdump -M $NFD_DIR -R $NFD_START:$NFD_END \
nfdump -R $NFD_DIR -a -A srcip -o 'fmt:%sap %byt' \
'(SRC NET 192.168.5.0/24) and (not DST NET 192.168.2.0/24)' | \
sed -e '1d' -e '/^Time window/d' -e '/^Total flows/d' -e '/^Sys:/d' \
-e 's/^Summary:*/&/w /tmp/result.4' -e '/^Summary:/d' -e 's/:0//g' \
-e 's/^[ \t]*//' -e '/^[0-9. ]*$/d' > $FILE1
awk -F,\ '{print $2}' $FILE8 | \
sed 's/total bytes: \([0-9.G ]*\)/<tr><td><b>Total:<\/b><\/td><td><b>\1<\/b><\/td><\/tr>/' > $FILE9
declare -A IPName
IPName[192.168.5.1]='user1'
IPName[192.168.5.11]='user2'
while read IP TRAF; do
if [ "${IPName[$IP]}" ]; then
echo "<tr><td>${IPName[$IP]}</td><td>$TRAF</td></tr>" >> $FILE3
#else
#echo "<tr><td>$IP</td><td>$TRAF</td></tr>" >> $FILE3
fi
done < $FILE1
sort $FILE3 > $FILE4
cat $FILE5 $FILE2 $FILE4 $FILE9 > $FILE6
mutt -s "Traffic report" -a $FILE6 -- me@domain.com < $FILE7
rm -f $FILE1 $FILE2 $FILE3 $FILE4 $FILE6 $FILE8 $FILE9 > /dev/null 2>&1