Cron - crontab executa metade do script bash

1

Eu tenho um script chamado testScript.sh que se parece com isso:

#!/bin/bash
curl -X GET https://www.example.com -o ~/Desktop/testFile.json
curl -X POST -d ~/Desktop/testFile.json http://www.example2.com

Eu quero rodar este script com o crontab, então eu editei o arquivo crontab com o comando crontab -e assim:

* * * * * ~/Desktop/testScript.sh

A parte estranha é que quando executo o script manualmente como ./testScript.sh com pi user, ambos os comandos curl são executados bem. Quando o script é executado a partir do crontab, vejo o testFile criado para que o primeiro comando curl seja executado, mas o curl Post não é executado. Eu já fiz minha pesquisa e a maioria das pessoas diz que são variáveis de ambiente, mas não consigo entender nenhuma das respostas.

EDIT * Eu segui a sugestão @roaima para criar um arquivo de log. Logs: .... Não foi possível ler os dados do arquivo testFile.json ", isso faz um aviso vazio: post ....... o post curl então está me dando um 400 bad request porque não há conteúdo para postar . 1) o testFile.json é criado com o primeiro comando curl, eu o vejo localmente na minha máquina, eu não sei porque ele não pode lê-lo. 2) o script ainda funciona bem se eu o executar assim./testScript.sh

    
por Athanasios Mel 27.09.2018 / 09:27

1 resposta

1

A resposta para o meu problema foi dada por @meuh

If you want curl to send the contents of a file, and not just the filename, you would need -d @filename but tilde ~ will not be expanded so use -d @$HOME/Desktop/testFile.json

    
por 27.09.2018 / 10:47

Tags