Tengo un problema para mostrar el resultado de un comando en cli y redirigirlo también a un archivo en mi Raspberry Pi 4 con Raspbian Buster.
Empiezo sudo crontab -e
.
Estas son mis declaraciones base:
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
La primera parte funciona, pero la segunda no se debe a un error de permiso al escribir en ufw-status.log
. Mensaje de error:-bash: /var/log/blockips.log: Keine Berechtigung
Entonces leí varios hilos y probé esto:
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
Eso no funciona. El archivo todavía no se modifica después de varios días. Pero si solo lo intento sudo ufw status verbose | sudo tee /var/log/ufw-status.log
en la línea de comando (no en crontab), funciona.
¿El error está en crontab o depende de la primera declaración?
¿Me puedes ayudar?
Gracias.
Respuesta1
Usaste sudo crontab -e
, que edita el crontab raíz. Como resultado, no necesita (ni debe usar) sudo
el archivo dentro del crontab
mismo porque los comandos ya se están ejecutando como root.
Por lo tanto, su comando crontab se puede simplificar a esto
0 */5 * * * /home/pi/linux_scripts/block/blockips.sh > /var/log/blockips.log 2>&1 && ufw status verbose > /var/log/ufw-status.log
No es una buena práctica ejecutar scripts de usuario (es decir, aquellos en el directorio de inicio de un usuario) como root, pero si es el único usuario en la máquina, es aceptable. (La razón es que su usuario normal puede cambiar el script para hacer cualquier cosa, y root lo ejecutará amablemente).
Si recibe errores, el primer lugar a buscar es el correo electrónico local donde cron
envía los errores. Puede usar el comando mail
o mailx
(como root, ya que es de un crontab raíz), oengañary solo less /var/mail/root
para ver el archivo de correo sin formato.