Skip to content

Instantly share code, notes, and snippets.

@raphink
Created May 4, 2012 05:22
Show Gist options
  • Save raphink/2592223 to your computer and use it in GitHub Desktop.
Save raphink/2592223 to your computer and use it in GitHub Desktop.
Healthcheck script for mcollective
#!/bin/bash
NODESDIR="${1:-${HOME}/puppetmaster/manifests/nodes}"
ret=0
mcofqdn=$(mco facts fqdn | sed -n 's@found@ found@p') # circumvent bug in mco
morethanonce=$(grep ' [0-9]*[^1] times' <<<"$mcofqdn")
[[ -n $morethanonce ]] \
&& echo "Found more than once in mco" \
&& echo "$morethanonce" \
&& echo \
&& ret=1
tmpdir=$(mktemp -d "${TMPDIR:-/tmp}/mco-check.XXXXXX")
trap 'rm -rf $tmpdir ; exit 1' 1 2 3 7 13 15
trap 'rm -rf $tmpdir' 0
sed -n "s@.*node[ \t]\+[\"']\([^\"']\+\)[\"'].*@\1@p" $NODESDIR/* | \
sort -u > $tmpdir/nodesfqdn
awk '{print $1}' <<<"$mcofqdn" | \
sort -u > $tmpdir/mcofqdn
onlymco=$(join -v 1 $tmpdir/{mco,nodes}fqdn)
[[ -n $onlymco ]] \
&& echo "Found in mco but not in nodes" \
&& awk '{print " "$1}'<<<"$onlymco" \
&& echo \
&& ret=1
onlynodes=$(join -v 2 $tmpdir/{mco,nodes}fqdn)
onlynodesalive=$(tr '\n' ' ' <<<"$onlynodes" \
| xargs -n 20 fping -aq 2>/dev/null)
[[ -n $onlynodesalive ]] \
&& echo "Found in nodes but not in mco (and alive)" \
&& awk '{print " "$1}'<<<"$onlynodesalive" \
&& echo \
&& ret=1
exit $ret
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment