Estou com um problema para mostrar a saída de um comando no cli e redirecioná-lo também para um arquivo no meu Raspberry Pi 4 com Raspbian Buster.
Eu começo sudo crontab -e
.
Estas são minhas declarações básicas:
0 */5 * * * sudo /home/pi/linux_scripts/block/blockips.sh > /var/log/blockips.log 2>&1 && sudo ufw status verbose > /var/log/ufw-status.log
A primeira parte funciona, mas a segunda não devido a um erro de permissão ao gravar em ufw-status.log
. Mensagem de erro:-bash: /var/log/blockips.log: Keine Berechtigung
Então li vários tópicos e tentei isso:
0 */5 * * * sudo /home/pi/linux_scripts/block/blockips.sh > /var/log/blockips.log 2>&1 && sudo ufw status verbose | sudo tee /var/log/ufw-status.log
Isso não está funcionando. O arquivo ainda não foi alterado após vários dias. Mas se eu tentar apenas sudo ufw status verbose | sudo tee /var/log/ufw-status.log
na linha de comando (não no crontab), funciona.
O erro está no crontab ou o erro depende da primeira instrução?
Pode me ajudar?
Obrigado.
Responder1
Você usou sudo crontab -e
, que edita o crontab raiz. Como resultado você não precisa - e não deve usar - sudo
dentro do crontab
próprio arquivo porque os comandos já estão sendo executados como root.
Seu comando crontab pode, portanto, ser simplificado para isto
0 */5 * * * /home/pi/linux_scripts/block/blockips.sh > /var/log/blockips.log 2>&1 && ufw status verbose > /var/log/ufw-status.log
Não é uma boa prática executar scripts de usuário (ou seja, aqueles no diretório inicial de um usuário) como root, mas se você for o único usuário na máquina, isso é aceitável. (A razão é que seu usuário comum pode alterar o script para fazer qualquer coisa, e o root irá executá-lo gentilmente para eles.)
Se você estiver recebendo erros, o primeiro lugar a procurar é no e-mail local, para onde cron
envia seus erros. Você pode usar o comando mail
ou mailx
(como root, já que é de um crontab root), outraire apenas less /var/mail/root
para ver o arquivo de correio bruto.