| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- #!/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' | 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
- <!DOCTYPE html>
- <html>
- <head>
- <style>
- table, td, th {
- border: 1px solid #ddd;
- text-align: center;
- vertical-align: middle;
- }
- table {
- border-collapse: collapse;
- width: 100%;
- }
- th, td {
- padding: 5px;
- }
- </style>
- </head>
- <title></title>
- <body>
- <table>
- <TD align="center">
- <form action="search.php" method="post">
- <input type="text" name="search" placeholder="Type username or ..." size="60">
- <input type="submit" name="submit" value="Search" />
- </form>
- </TD>
- </table>
- <table>
- 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
- <tr>
- <td width="20%">$DATE</td>
- <td width="20%">$TIME</td>
- <td width="20%">$GROUP</td>
- <td width="20%">$USER</td>
- <td width="20%">$ADDRESS</td>
- </tr>
- EOF
- done
- cat >> $WEB/menu.html <<\EOF
- </table>
- </body>
- </html>
- 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]"
|