minha melhor ideia até agora
para verificar primeiro se o conteúdo corresponde ao que deve estar lá e apenas atualizá-lo, se não corresponder:
if [[ $(crontab -l | egrep -v "^(#|$)" | grep -q 'some_command'; echo $?) == 1 ]]
then
echo $(crontab -l ; echo '* 1 * * * some_command') | crontab -
fi
mas isso fica complicado o suficiente para criar um script separado em torno dessa tarefa cron.
outras ideias
você pode enviar a string via stdin para crontab (cuidado, isso limpa todas as entradas anteriores do crontab):
echo "* 1 * * * some_command" | crontab -
isto deve funcionar mesmo através do ssh:
echo "* 1 * * * some_command" | ssh user@host "crontab -"
se você quiser acrescentar ao arquivo, você pode usar isto:
# on the machine itself
echo "$(echo '* 1 * * * some_command' ; crontab -l)" | crontab -
# via ssh
echo "$(echo '* 1 * * * some_command' ; ssh user@host crontab -l)" | ssh user@host "crontab -"