5 USAGE
="usage: ${0} [-dm] [-l #]"
8 printf "%s\n" "$USAGE" >&2; exit 2
12 printf "error: server not detected, needs to be set manually\n" >&2
13 printf "set \$SERVER or modify the script itself\n" >&2
20 while getopts "dl:m" flag
; do
22 d
) CUTCMD
="-d/ -f1,2" ;;
23 m
) CUTCMD
="-d: -f2,3" ;;
25 if [ "$OPTARG" -eq "$OPTARG" ]; then
34 # ... && ... || is not an if-then-else, but this works because
35 # there's no way for only one printf to fail
36 [ -z "$SERVER" ] && SERVER
=$(which > /dev/null 2>&1 apache2 && printf "apache2" || which > /dev/null 2>&1 nginx && printf "nginx" || err)
38 CURDAY
=$(tail -n1 /var/log/"$SERVER"/access.log | grep -oE "[0-9]{2}/.*/[0-9]{4}:")
40 { cat /var
/log
/"$SERVER"/access.log
/var
/log
/"$SERVER"/access.log
.1; gzip -cd $(ls /var/log/"$SERVER"/access.log.*.gz | sed 's/.*\.\([0-9]*\)\.gz
/\
1 &/' | sort -n | cut -d' ' -f2-); } | awk -v curday="$CURDAY" '$0 ~ curday
{ if (match
($0, /[0-9]{2}\
/.
*\
/[0-9]{4}:[0-9]{2}:[0-9]{2}:[0-9]{2}/)) { print substr
($0, RSTART
, RLENGTH
) } next
} { exit }' | cut $CUTCMD | uniq -c | tail -n"$TAILN"