Como todos que responderam já pontuaram, o cron executa comandos em um ambiente mínimo. Eu sugiro que você tente isso em sequência:
- Use o caminho completo para todas as chamadas feitas no script.
-
Na entrada crontab, execute o script explicitamente usando perl.
/usr/bin/perl /home/joe/netcheck.pl
-
Capture a saída stdout e stderr do script.
/usr/bin/perl /home/joe/netcheck.pl 1>/home/joe/netcheck-stdout.log 2>/home/joe/netcheck-stderr.log &
-
Substitua temporariamente
exec "nm-applet"
porexec "ls"
ou algum outro comando simples para verificar se o problema está no ambiente que o applet nm espera, não com o próprio script. - Verifique se a execução de
nm-applet –sm-disable
ajuda. - Se você ainda estiver preso, execute
strace nm-applet
para rastrear as chamadas do sistema. Execute isto normalmente e dentro do cron para identificar a chamada da qual os logs divergem. Depurar a partir desse ponto.
Dito isto, não me surpreendo ao ver o nm-applet não rodando corretamente dentro do cron. Provavelmente precisa de acesso às bibliotecas do monitor e do gnome que estão faltando no ambiente do cron. Um emprego pode ser melhor, mas nem isso é ideal. Eu recomendo usar wicd em vez disso, se você precisar se reconectar a partir de um cron job.