Cron não funciona com o shell script

4

No processo de aprender / entender o Linux (difícil, mas gostando disso). Eu escrevi um script de shell muito curto que usa wget para puxar um arquivo index.html de um site.

#!/bin/bash

#Script to wget website mywebsite and put it in /home/pi/bin

index=$(wget www.mywebsite.com)

E isso funciona quando eu digito o comando wget_test na linha de comando. Ele envia um arquivo .html para / home / pi / bin.

Eu comecei a tentar fazer isso via cron para que eu possa fazer isso em um momento específico. Eu digitei o seguinte usando crontab -e

23 13 * * *   /home/pi/bin/wget_test

Neste exemplo, eu queria que o script fosse executado em 13.23 e gerasse um arquivo .html para / home / pi / bin, mas nada está acontecendo.

    
por paul 13.03.2017 / 14:36

2 respostas

6

Esta linha index=$(wget www.mywebsite.com) irá definir a variável $index para nada. Isso ocorre porque (por padrão) wget não escreve nada em stdout , então não há nada para colocar na variável.

O que wget faz é gravar um arquivo no diretório atual. As tarefas do Cron são executadas a partir do diretório $HOME , portanto, se você quiser gravar um arquivo no diretório $HOME/bin , precisará fazer uma das duas coisas

  1. Escreva wget -O bin/index.html www.mywebsite.com
  2. Escreva cd bin; wget www.mywebsite.com

A propósito, o diretório ~/bin é geralmente onde os scripts e programas pessoais seriam armazenados, portanto, seria melhor pensar em outro lugar para gravar um arquivo regularmente recuperado de um site.

    
por 13.03.2017 / 15:07
3

Certifique-se de que seu script bash tenha permissões para ser executável e verifique se o cronjob está definido no usuário desejado.

O que eu acho que está acontecendo é que o comando em seu script só precisa ser:

wget www.mywebsite.com/index.html
    
por 13.03.2017 / 14:40

Tags