
		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é?