From af0fb57ee1039b1b898764811c24cca08aa619ec Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Tue, 27 Nov 2012 19:00:54 +0100 Subject: check-host: add script to check for specific host groups --- check-hosts | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100755 check-hosts diff --git a/check-hosts b/check-hosts new file mode 100755 index 0000000..bcdddd8 --- /dev/null +++ b/check-hosts @@ -0,0 +1,127 @@ +#!/bin/bash + +STALE_DIR="${HOME}/var/stale/" + +get_names() { + bcfg2-reports "$@" --fields=name | sed 's/ *$//' +} + +get_extra() { + get_names | while read i ; do test -z "$(bcfg2-reports -e $i)" || echo $i ; done +} + +get_stale() { + get_names --stale | sed 's/ *$//' +} + +get_all() { + get_names -a | sed 's/ *$//' +} + +get_bad() { + get_names -d | sed 's/ *$//' +} + +get_clean() { + get_names -c | sed 's/ *$//' +} + +get_count() { + clean=$(get_clean | wc -l) + bad=$(get_bad | wc -l) + extra=$(get_extra | wc -l) + stale=$(get_stale | wc -l) + + echo "clean=$clean bad=$bad extra=$extra stale=$stale" +} + +get_stale_once() { + get_stale | while read host; do + STALE_FILE="${STALE_DIR}/${host}" + test -f "${STALE_FILE}" || ( + touch "${STALE_FILE}" + echo $host + ) + done + + comm -13 <(get_stale | sort) <(get_all | sort) | while read host; do + STALE_FILE="${STALE_DIR}/${host}" + test -f "${STALE_FILE}" && rm -f "${STALE_FILE}" + done +} + +cron() { + stale=$(get_stale_once) + if [ -n "$stale" ]; then + sendmail -t <