Usando curl com nome de arquivo contendo uma data dinâmica

0

Estou tentando fazer upload do arquivo de log criado dinamicamente da minha caixa local para o meu servidor FTP. Isso tudo acontece em um cron job (crontab) eu corro todas as noites. Cria o arquivo usando:

30 00 * * * touch ~/Desktop/logs/"log$(date +'\%m\%d\%y')"

O que funciona bem. No entanto, quando tento fazer o upload do arquivo usando a mesma sintaxe:

50 00 * * * curl -T ~/Desktop/logs/"log$(date +'\%m\%d\&y')" -u user:pass ftp://example.com/logs/

Isso me dá o seguinte erro:

date: extra Operand

Eu também tentei sem escapar do%:

curl -T ~/Desktop/logs/"log$(date +'%m%d%y')" -u user:pass ftp://example.com/logs/

Que funciona na linha de comando normal, mas quando executado através do crontab, apresenta o seguinte erro:

/bin/sh: Syntax error: Unterminated quoted string

Alguma idéia de como enviar com êxito o registro diário para o meu servidor?

    
por Louis B. 18.10.2011 / 22:23

1 resposta

1

A maneira que eu normalmente especificaria a data em uma tarefa cron não é ter aspas ao redor do nome inteiro e usar backticks em volta do comando date, então:

50 00 * * * curl -T ~/Desktop/logs/log'date +'\%m\%d\%y'' -u user:pass ftp://example.com/logs/

Embora espere que a sintaxe $(date ...) funcione bem.

(Ah, e estou assumindo o e comercial antes do y no segundo cron job ser um erro de digitação na questão - mas se ele também estiver no seu cron job, isso será um problema.)

    
por Hamish Downer 19.10.2011 / 00:00