Pode ser feito no bash, mesmo. Em geral:
mysql -Ne 'SELECT service_name,'#',IFNULL(check_command,"-"),'#',hostname FROM table_of_wanted_nagios_monitors' |
while IFS='#' read sn cc hn; do
# strip extra spaces (due to IFS) from $cc for testing only
scc=$(echo "$cc" | sed 's/ //g')
if [ "x$scc" == "x-" -o "x$scc" == "x" ]; then
cc="";
else
cc=" check_command $cc";
fi;
cat > /path/to/nagios/configs/${hn}-${sn}.cfg <<EOF
define service {
use $sn
host_name $hn
$cc
}
EOF
done
Usamos algo assim (embora escrito em um idioma diferente e com um pouco mais de complexidade) que consulta algumas APIs internas para preencher nossos Nagios. Funciona como um campeão.