Saída Cronjob para log

2

Estou usando um script para testar a velocidade de banda larga e gostaria de configurar um cronjob para testar a cada n minutos e enviar para um arquivo. O comando para iniciá-lo a partir de um console shell e anexar ao arquivo de log, precedendo uma linha com a data atual, é

tespeed.py -w | sed -e "s/^/$(date +\"%d-%m-%y\ %T\"), /" >>tespeedlog.csv

Mas se eu usar este comando em um cronjob, algo não funciona; os relatórios do syslog:

Sep 25 13:23:01 raspberrypi /USR/SBIN/CRON[6719]: (pi) CMD (/home/pi/tespeed/tespeed.py -w | sed -e "s/^/$(date +')

O que devo verificar?

    
por alzambo 25.09.2013 / 13:42

1 resposta

4

Crie um script de wrapper, pois pode haver um problema com o formato de data de escape. O problema parece ser com o caractere % , que pode ser interpretado como um novo especificador de linha em alguns agendadores de cron:

Coloque isso no arquivo /usr/local/bin/wrpr.sh :

#!/bin/sh
tespeed.py -w | sed -e "s/^/$(date +\"%d-%m-%y\ %T\"), /" >> /tmp/tespeedlog.csv

Torne-o executável:

chmod u+x /usr/local/bin/wrpr.sh

E agende-o com o cron (isto irá sobrescrever o crontab do usuário atual):

echo "* * * * * /usr/local/bin/wrpr.sh" | crontab

Caso contrário, use crontab -e para adicioná-lo ao crontab do usuário atual.

    
por 25.09.2013 / 13:56