#!/bin/sh trap "exit 1" 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) { 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-); } | grep -a "$@" | awk '{print $1}' | sort | uniq | xargs -L 1 host