bkammers
(usa Ubuntu)
Enviado em 13/03/2017 - 08:54h
Bom dia galera, beleza?
Realmente eu nunca tinha visto um caso desse antes...
É possível, o resultado de um shellscript ser diferente quando executado manualmente e pelo CRONTAB ?
Pensei estar ficando maluco, mas realmente isso está ocorrendo.
FreeBSD 10 (pfSense 2.3.3) 64 bits
Criei um script que valida quando o link adsl dinâmico fica fora do ar.
Algo bem simples, com testes de ping mesmo.
Ocorre que, se eu executar manualmente, está tudo ok (e de fato, está). Porém, pelo crontab, cai na outra condição e joga no log que o link está fora.
Alguém ja viu isso?
#!/bin/bash -x
A=`ping -c 1 -S 10.0.42.10 10.0.42.1 > /dev/null ; echo $?`
B=`ping -c 1 -S 10.0.42.10 8.8.8.8 > /dev/null ; echo $?`
op1(){
echo "Modem ADSL desligado ou desconectado. `date "+%d/%m/%y %H:%M"`" >> /opt/log_adsl.log
}
op2(){
echo "Link ADSL RS com problemas. `date "+%d/%m/%y %H:%M"`" >> /opt/log_adsl.log
}
op3(){
echo "TUDO OK. `date "+%d/%m/%y %H:%M"`" >> /opt/log_adsl.log
}
if [ "$A" != 0 ]
then
op1
fi
if [ "$A" = 0 ] && [ "$B" = 0 ]
then
echo "OK..."
op3
fi
if [ "$A" = 0 ] && [ "$B" != 0 ]
then
echo "PROBLEMAS..."
op2
fi
Manualmente, ativa a função op3 e realmente o link está ok. Mas pelo crontab, ativa a op1. Estranho né?