#!/bin/bash
# $Id: webv,v 1.96 2025/02/21 17:40:13 fulford Exp fulford $
# $Source: /src/admin/usr/local/etc/RCS/webv,v $
# $Revision: 1.96 $
# Author C W Fulford.
# Copyright 2014 (c) C W Fulford.
# Licensed for public use under the LGPL, .
# For assistance contact fulford@fulford.net 0709 229 5385
########################################################################
cmd=`basename $0`
syntax="$cmd: [[-d] [-v] <id> [-C # ]] | -V"
ver=`echo "$Id: webv,v 1.96 2025/02/21 17:40:13 fulford Exp fulford $"|awk '{print $3,$4,$5}'`
while [ $# -gt 0 ] ;do
case $1 in
-C) ttd=$2;shift 2;;
-c) config=$2;shift 2;;
-d) debug=:;set -x;shift;;
-s) sort=0;shift;;
-v) verbose=:;shift;;
-V) echo "$cmd $ver";exit;;
*) sites="$sites $1";shift;;
esac
done
[ -z "$sites" ]&&{ echo "syntax: $syntax" >&2;exit 1;}
[ `id -u` -eq 0 ] &&{ echo "$cmd: Cannot run as root user.">&2;exit 1 ;}
config=${config:-"/usr/local/etc/webv.cf"}
[ -f "$config" ]||{ echo "$cmd: $config not found">&2;exit 1 ;}
tmp=/tmp/webv$$
_exit () {
[ -f $tmp ] && rm $tmp
exit $1
}
# total days in full month
Days=`cal \`date +"%m %Y"\` | awk 'NF {DAYS=$NF} END {print (DAYS)}'`
# total mins in full month
Mins=`bc<<- .
scale=2
$Days * 24 * 60
.
`
[ $verbose ] &&{
printf "%30s %10s %9s %8s\n" "Website" "Visitors" "Average" "Prediction"
}
for site in $sites ;do
eval `sed -ne "/^$site:/,/^$/{
/^[ \t][^#]*/p
}" $config
`
[ -z "$LOC" ] &&{
echo "$cmd: No LOC for $site in $config" >&2
_exit 1
}
[ -z "$STATSRVR" ] &&{
echo "$cmd: No STATSRVR for $site in $config" >&2
_exit 1
}
[ -z "$URI" ] &&{
echo "$cmd: No URI for $site in $config" >&2
_exit 1
}
read -r eDays eHrs eMins <<- .
$(date +"%d %H %M")
.
toteMins=`bc <<- .
($eDays - 1) * 24 * 60
.
`
toteMins=`bc <<- .
$eHrs * 60 + $toteMins
.
`
toteMins=`bc <<- .
scale=2
$eMins + $toteMins
.
`
[ ! $ttd ] &&{
if wget --spider -q $STATSRVR$LOC ;then
ttd=`wget -qO - $STATSRVR$LOC |
sed -ne '/Viewed traffic/s/[^0-9]*\([0-9,]*\).*/\1/p'|
sed -e 's/,//'
`
else
error=$?
echo "$cmd: $STATSRVR$LOC not available.">&2
_exit $error
fi
}
[ ! $ttd ] &&{
echo "$cmd: stats at $URI not found" >&2
continue
}
ave=`bc <<- .
scale=6
$ttd / $toteMins
.
`
perDay=`bc <<- .
scale=6
$ave * 60 * 24
.
`
predn=`bc <<- .
scale=6
$ave * $Mins
.
`
#home=`echo $URI|sed -ne 's/\([^\/]*\)\/.*$/\1/p'`
home=$URI
[ ${#home} > 30 ] && home="${home:0:27}..."
if [ "$verbose" ];then
printf "%30s %8i %10.2f %8.0f\n" $home $ttd $perDay $predn
else
printf "%30s %3i %4.2f %4.0f\n" $home $ttd $perDay $predn
fi
unset ttd URI LOC STATSRVR
done >$tmp
if [ $sort ];then
sort -n -r -k3 <$tmp
else
cat $tmp
fi
_exit 0
######################################################################
# This program is free software: you can redistribute it and or #
# modify it under the terms of the Lesser GNU General Public License #
# as published by the Free Software Foundation, either version 3 of #
# the License, or (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU General Public License for more details. #
# #
# A copy of the Lesser GNU General Public License and the GNU #
# General Public License is available at #
# <http://www.gnu.org/licenses/>. #
######################################################################
Copyright
© 2003-2017
Clifford W Fulford.
Fulford Consulting Ltd.
Regd. Co. 4250037 in England & Wales.
Regd. office 162, Edward Rd. Nottingham NG2 5GF, England, UK.
Related web sites: City Linux | Flare Support | West Bridgford | Fulford Portal | Joan Mary Fulford (Nottingham Writer) | Fulford Gallery | Amharic Interpreter | Arabic Interpreter | Tigrinya Interpreter
The layout and associated style sheets for this page are taken from the World Wide Web Consortium and used here under the W3C software licence.