#!/bin/ksh
#
# distribute the stuff
#

SRC_BASE=/usr/local/nagios/server

SRC="$SRC_BASE/bin $SRC_BASE/libexec"
DST=/usr/local/nagios

TESTHOSTS="puma titi-test"

AIXHOSTS="`cat $SRC_BASE/HostNames/IBM`"

SUNHOSTS="`cat $SRC_BASE/HostNames/Sun`"


verbose () { [ -n "$VERBOSE" ] && echo "$*"; }
debug ()   { [ -n "$DEBUG" ] && echo "$*";   }

moniscript_dist () {
  for HOST in $*
  do
    echo "Distributing to $HOST"
    ssh $HOST mkdir -p $DST
    debug "scp -qrpB $SRC $HOST:$DST"
    scp -qrpB $SRC $HOST:$DST
    ssh $HOST "crontab -l | egrep -v '^#' | egrep -s /cron_script.sh || $DST/bin/cron_script.sh -i"
    ssh $HOST "find $DST/. -type f | egrep \"[.]std$|[.]new$|core$|dist.sh|[.]old$\" | xargs rm -f >/dev/null 2>&1"
  done
}

moniscript_test () {
  for HOST in $*
  do
    echo "Testing on $HOST"
    ssh $HOST $DST/bin/cron_script.sh -vn
    CRON=$(ssh $HOST "crontab -l | grep cron_script")
    if [ -z "$CRON" -a -n "$APPLY" ]
    then
      debug "ssh $HOST $DST/bin/cron_script.sh -vi"
      ssh $HOST $DST/bin/cron_script.sh -vi
    fi
  done
}

#
# Scratch the .b files left over by editor
#
find $SRC_BASE/. -type f -name \*.b | xargs rm -f 2>/dev/null

#
# Send to host or hostlist
#
if ! set -- $(getopt "adv" $*)
then
  usage
  exit 4
fi

while [ "$1" != "--" ]
do
  case $1 in
    -a) APPLY="apply";;
    -d) DEBUG=debug;VERBOSE=verbose;;
    -v) VERBOSE=verbose;;
    *) echo "Error: Flag '$1' not implemented"; usage; exit 4;;
  esac
  shift
done
shift

if [ -n "$1" ]
then
  moniscript_dist $1
  moniscript_test $1
else
  moniscript_dist `echo $TESTHOSTS  `
  moniscript_test `echo $TESTHOSTS  `
  moniscript_dist `echo $AIXHOSTS   `
  moniscript_test `echo $AIXHOSTS   `
  moniscript_dist `echo $SUNHOSTS   `
  moniscript_test `echo $SUNHOSTS   `
fi

