O script de verificação de tempo do bash permite uma diferença de 1 minuto

1

Estou desenvolvendo uma verificação nagios / collectd para verificar o tempo em cada servidor. Eu fiz script bash para obter informações de arquivos Collectd WSP e verificá-los contra a hora do servidor nagios ( date +%s ). O Collectd envia o valor date +%s após 60 segundos do último envio. O problema que estou enfrentando é como eu posso fazer o comando de verificação calcular que se o valor estiver fora de sincronia no máximo 60 segundos, então tudo está OK, se estiver fora de sincronia por 60 segundos, então é crítico.

O script:

Tempo de coleta no servidor nagios e arquivos WSP coletados que outros servidores enviam. Cada comando retorna um valor em epoch ( $time é obtido do servidor nagios e $stime é obtido dos arquivos WSP collectd):

time='date +%s'
stime='whisper-fetch --from=$(expr $(date +%s) - 60) --until=$(date +%s) $WSP_PATH | cut -c1-10'

Declaração IF crítica. Se esse $stime não corresponder a $time obtido do servidor nagios, ele será crítico. Eu quero que isso seja, se o valor do tempo nagios servidores está fora de sincronia ao longo de 60 segundos em relação ao valor de saída WSP, então sua crítica mais o seu OK.

if [ "$stime" -ne "$time" ] ; then
    echo CRITICAL: Server time is out of sync!
    exit $STATE_CRITICAL
fi

Declaração OK:

echo OK: Server time is in sync
exit $STATE_OK
    
por mYzk 10.09.2014 / 08:01

1 resposta

2

Subtraia os dois tempos um do outro e verifique se o resultado é maior que 60. Parece que bash não tem um operador para calcular o valor absoluto, então você tem que fazer a comparação nos dois sentidos.

if [ $[time-stime] -gt 60 ] || [ $[stime-time] -gt 60 ] ; then
    
por 10.09.2014 / 08:18

Tags