remove GNU-specific `sort -V`, fix log concatenation order for {,e}searchlog
[logtools.git] / chckip
diff --git a/chckip b/chckip
index c2d8afe2e57136741f0b4bb833e27cfdf68e6eeb..1754c5179ec24966d041017b32853181ef8a1762 100755 (executable)
--- a/chckip
+++ b/chckip
@@ -1,5 +1,15 @@
 #!/bin/sh
 
-SERVER=$(which > /dev/null apache2 && printf "apache2" || which > /dev/null nginx && printf "nginx" || printf "ERROR: server not detected, needs to be set manually")
+trap "exit 1" USR1
 
-{ zcat /var/log/"$SERVER"/access.log.*.gz; cat /var/log/"$SERVER"/access.log /var/log/"$SERVER"/access.log.1; } | grep -a "$@" | awk '{print $1}' | sort | uniq | xargs -L 1 host
+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