#!/bin/sh

trap "exit 2" USR1

err() {
        printf "error: server not detected, needs to be set manually\n" >&2
        printf "set \$SERVER or modify the script itself\n" >&2
        kill -USR1 "$$"
}

# ... && ... || is not an if-then-else, but this works because
# there's no way for only one printf to fail
[ -z "$SERVER" ] && SERVER=$(which > /dev/null 2>&1 apache2 && printf "apache2" || which > /dev/null 2>&1 nginx && printf "nginx" || err)

[ "$1" -eq "$1" ] 2>/dev/null && NUM="$1" || NUM=30

cut -d: -f2,3 < /var/log/"$SERVER"/access.log | uniq -c | tail -n"$NUM"
