Como faço para que este script seja executado periodicamente via cron?

1

Eu fiz um script que envia a temperatura do meu sensor local para um servidor na internet e depois vejo um gráfico dele. Tudo funciona bem quando eu executo manully. Eu tenho a última versão do Ubuntu. Quando se trata de correr periodicamente a cada minuto com o crontab, nada funciona. Não envia nada. Eu tentei executá-lo como SUDO e como usuário, tentei adicioná-lo no arquivo crontab para executá-lo em vários locais, como /bin/myscript.sh, / user / Desktop e muitos outros ... Nada parece funcionar. Alguma idéia de como resolvê-lo? Obrigada!

   echo Init ... 
   TEMP='/usr/bin/snmpwalk  -v 1 -c public 192.168.1.2 iso.3.6.1.4.1.38783.3.9.0 |  cut -d" " -f4' 
   echo $TEMP


   REALTEMP='echo  "scale=1; $TEMP/10"  | bc -l'
   echo $REALTEMP 

   echo 
   wget "http://api.thingspeak.com/update?key=MYKEY=$REALTEMP"
    
por Vagelism 09.09.2012 / 17:40

4 respostas

2

Eu tive um problema semelhante ao fazer o cron reconhecer um comando em um servidor meu. A dica que resolveu meu problema veio da seção de solução de problemas do Ubuntu Cron Howto :

  

Ao adicionar uma nova entrada a um crontab em branco, esqueça de adicionar um   nova linha no final é uma fonte comum para o trabalho não ser executado. Se o   última linha no crontab não termina com uma nova linha, não haverá erros   ser relatado em edição ou tempo de execução, mas essa linha nunca será executada. Ver homem   crontab para mais informações. Isso já foi sugerido como um   bug.

    
por glibdud 11.09.2012 / 15:19
3

Assumindo que sua linha crontab contém apenas o nome do script, você precisa especificar o que deve executar o script, seja no crontab (assumindo que ele deve ser executado com o bash shell)

/5 * * * * /bin/bash /path/to/myscript.sh

ou adicionando uma linha '' shebang '' no início do script

#!/bin/bash

Não é óbvio que o script dependa de quaisquer variáveis de ambiente, mas vale a pena observar que uma tarefa do cron é executada apenas com HOME , LOGNAME , PATH e SHELL set.

O arquivo de script também precisa ser executável ( chmod +x myscript.sh ).

    
por chronitis 11.09.2012 / 15:10
1

Eu não tenho nenhuma pista sobre o seu problema de script, mas se você precisa ter alguns gráficos em tempo real sobre a temperatura dos sensores disponíveis através de um servidor web, você pode tentar psensor-server .

Ele está disponível nos repositórios padrão do Ubuntu, então você pode instalá-lo facilmente com 'sudo apt-get instalar o psensor-server', executar 'psensor-server' e, finalmente, abrir a URL ' link '. Você receberá este tipo de gráficos:

Como alternativa, você pode recuperar programaticamente como uma saída JSON as temperaturas usando o link '.

    
por JeanFI 11.09.2012 / 13:22
0

Obrigado a todos pela sua ajuda. Consigo executá-lo como um serviço com a ajuda que encontrei neste site Você pode fazer o que ele disse. Ou, você pode fazer isso, o que irá executar qualquer solicitação para você.

  1. Primeiro, crie um script e edite-o de acordo com suas necessidades. Vamos dizer, você chama, autorun.sh
  2. Copie esse script para /etc/init.d
  3. Execute os seguintes comandos:

    sudo update-rc.d autorun.sh defaults

    sudo chmod +x /etc/init.d/autorun.sh

Mais uma vez obrigado a todos por seus conselhos. Eu realmente não tenho tempo para verificar todos eles. Eu farei isso em breve!

    
por Vagelism 12.09.2012 / 14:32