Per poter svolgere un task a lavoro mi son fatto questo script che controlla se le macchine loggano remotamente, lo posto nel caso a qualcuno servisse per prenderne spunto.
Eccolo.
#!/bin/bash
RLF="macchina remota per il logging"
LIST_FILE=$1
rm CHECKED ERRORS >/dev/null
for hosts in $(cat ${LIST_FILE})
do
echo "################ START ${hosts} ################"
echo "Controllo ${hosts}"
if ! ping -c1 ${hosts} >/dev/null
then
echo "Host: ${hosts}, non risponde al ping... Provo gli altri domini"
for domains in lista di domini alternativi
do
c_host=`echo ${hosts} |cut -d. -f1`
tmp_host="$c_host.${domains}"
echo "Provo ${tmp_host}"
if ping -c1 ${tmp_host} >/dev/null
then
echo "Trovato! Imposto hosts a ${tmp_host}"
hosts=${tmp_host}
break
fi
done
fi
if ! ssh -o StrictHostKeyChecking=no -o ConnectTimeout=30 root@${hosts} echo
then
echo "Errore nella connessione alla macchina ${hosts}"
fi
echo "Eseguo il controllo su macchina remota di logging..."
file_to_find=`echo ${hosts} |cut -d. -f1`
remote_logging_file=`ssh -o StrictHostKeyChecking=no -o ConnectTimeout=30 root@${RLF} ls /var/remotelog/${file_to_find}*`
if [ $(echo ${remote_logging_file} |sed -e "s/ /\\n/g" |wc -l) -gt 1 ]
then
echo "Occorrenza doppia, provo ${hosts}.log"
remote_logging_file="/var/remotelog/${hosts}.log"
result=`ssh root@${RLF} -o StrictHostKeyChecking=no -o ConnectTimeout=30 cat ${remote_logging_file} |egrep ".*logger.*Rocchi$" |wc -l`
elif [ -z ${remote_logging_file} ]
then
result=0
MSG_ERR="E_NO_REMOTE_FILE"
else
result=`ssh root@${RLF} -o StrictHostKeyChecking=no -o ConnectTimeout=30 cat ${remote_logging_file} |egrep ".*logger.*Rocchi$" |wc -l`
fi
if [ ${result} -lt 1 ]
then
echo "CRITICAL ! ${hosts} non sta loggando! check manuale!!"
echo "${hosts} ${MSG_ERR}" >> ERRORS
else
echo "OK! Go On!"
echo ${hosts} >> CHECKED
fi
echo "################ END ${hosts} ################"
done