#!/bin/bash ######################################################################### # Check VPN connection including users # # Created by DoIT-PM # # ver 0.3 # ######################################################################### #---------------------------- VARIABLES --------------------------------# BDA="23" TIM=$(date +%H) DAY=$(date +%d) DAB=$(date +%y%m%d) DAT=$(date +%b" "%_d) WEB="/opt/librenms/html/admin/vpn" test -f /var/log/messages && LOG="/var/log/messages" test -f /var/log/syslog && LOG="/var/log/syslog" REP="/tmp/vpn.rep" test -d $WEB || mkdir $WEB test -f $REP && rm -rf $REP #---------------------------- COLLECTION -------------------------------# collect(){ echo -e "- \e[1;32mExtracting\e[0m data from [\e[1;33m$DAT\e[0m]" echo "-------- ---------------- ------------ ----------------" > $REP echo "TIME VPN-PROFILE USER-NAME IP-ADDRESS" >> $REP echo "-------- ---------------- ------------ ----------------" >> $REP cat $LOG | grep "$DAT" | grep "ASA-6-113039" | awk '{print $3,$8,$10,$12}' | sed 's// /g' >> $REP echo "-------- ---------------- ------------ ----------------" >> $REP } #----------------------------- BIG-DATA --------------------------------# bigdata(){ if [ "$TIM" -eq "$BDA" ]; then echo -e "- \e[1;32mAdding\e[0m day data to BigData" cat $REP | grep "^[0-9]" > $WEB/vpn.tmp sed -i "s/^/$DAB /" $WEB/vpn.tmp cat $WEB/vpn.tmp >> $WEB/vpn.rep echo "------ -------- ---------------- ------------ ----------------" > $WEB/vpn.clr echo "DATE TIME VPN-PROFILE USER-NAME IP-ADDRESS" >> $WEB/vpn.clr echo "------ -------- ---------------- ------------ ----------------" >> $WEB/vpn.clr cat $WEB/vpn.rep | awk '!seen[$0]++' | sort >> $WEB/vpn.clr echo "------ -------- ---------------- ------------ ----------------" >> $WEB/vpn.clr cat $WEB/vpn.clr | column -t > $WEB/vpn.txt else echo -e "- \e[1;31mNOT\e[0m right time for updating BigData" fi } #---------------------------- WEB-REPORT -------------------------------# webrep(){ echo -e "- \e[1;32mBuilding\e[0m webreport [\e[1;35m$WEB/menu.html\e[0m]" cat > $WEB/menu.html << EOF
EOF cat $WEB/vpn.clr | egrep -v "\---|ADDRESS" | awk '{print $1","$2,$3,$4,$5}' > $WEB/vpn.tab cat /tmp/vpn.rep | egrep -v "\---|ADDRESS" > /tmp/vpn.tab sed -i "s/^/$DAB,/" /tmp/vpn.tab cat /tmp/vpn.tab | egrep -v "\---|ADDRESS" >> $WEB/vpn.tab cat $WEB/vpn.tab | sed 's/,/ /g' | column -t > $WEB/vpn.src LST=$(cat $WEB/vpn.tab | awk '{print $1}') #NUMG=$(cat $WEB/vpn.tab | awk '{print $2}' | sort | uniq | wc -l) #NUMU=$(cat $WEB/vpn.tab | awk '{print $3}' | sort | uniq | wc -l) for i in $LST; do DATE=$(cat $WEB/vpn.tab | grep -w "$i" | sed 's/,/ /g' | awk '{print $1}') TIME=$(cat $WEB/vpn.tab | grep -w "$i" | sed 's/,/ /g' | awk '{print $2}') GROUP=$(cat $WEB/vpn.tab | grep -w "$i" | awk '{print $2}') USER=$(cat $WEB/vpn.tab | grep -w "$i" | awk '{print $3}') ADDRESS=$(cat $WEB/vpn.tab | grep -w "$i" | awk '{print $4}') cat >> $WEB/menu.html < EOF done cat >> $WEB/menu.html <<\EOF
$DATE $TIME $GROUP $USER $ADDRESS
EOF #sed -i "s/NUMG/$NUMG/g" $WEB/menu.html #sed -i "s/NUMU/$NUMU/g" $WEB/menu.html } #------------------------------- CORE ----------------------------------# clear collect bigdata webrep cat $REP | column -t USR=$(cat $REP | awk '{print $3}' | egrep -v "USER|\---" | sort | uniq | wc -l) VPN=$(cat $REP | egrep -v "USER|\---" | sort | wc -l) echo -e "- Summary today VPN access: [\e[1;33m$VPN\e[0m]" echo -e "- Unique today VPN users: [\e[1;33m$USR\e[0m]" echo -e "- Report summary: [\e[1;35m$WEB/vpn.txt\e[0m]"