Ich habe ein Problem, die Ausgabe eines Befehls auf der Befehlszeile anzuzeigen und sie mit Raspbian Buster auch in eine Datei auf meinem Raspberry Pi 4 umzuleiten.
Ich beginne sudo crontab -e
.
Dies sind meine Grundaussagen:
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
Der erste Teil funktioniert, der zweite jedoch nicht, da beim Schreiben in ein Berechtigungsfehler vorliegt ufw-status.log
. Fehlermeldung:-bash: /var/log/blockips.log: Keine Berechtigung
Also habe ich mehrere Threads gelesen und Folgendes ausprobiert:
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
Das funktioniert nicht. Die Datei ist nach mehreren Tagen immer noch nicht geändert. Aber wenn ich es nur sudo ufw status verbose | sudo tee /var/log/ufw-status.log
über die Kommandozeile (nicht über Crontab) versuche, funktioniert es.
Liegt der Fehler in der Crontab oder hängt der Fehler von der ersten Anweisung ab?
Kannst du mir helfen?
Danke.
Antwort1
Sie haben verwendet sudo crontab -e
, das die Root-Crontab bearbeitet. Daher benötigen Sie sudo
die crontab
Datei selbst nicht – und sollten sie auch nicht verwenden, da die Befehle bereits als Root ausgeführt werden.
Ihr Crontab-Befehl kann daher folgendermaßen vereinfacht werden
0 */5 * * * /home/pi/linux_scripts/block/blockips.sh > /var/log/blockips.log 2>&1 && ufw status verbose > /var/log/ufw-status.log
Es ist keine gute Praxis, Benutzerskripte (z. B. solche im Home-Verzeichnis eines Benutzers) als Root auszuführen, aber wenn Sie der einzige Benutzer auf dem Computer sind, ist dies akzeptabel. (Der Grund dafür ist, dass Ihr normaler Benutzer das Skript beliebig ändern kann und Root es dann pflichtbewusst für ihn ausführt.)
Wenn Sie Fehler erhalten, sollten Sie zuerst in der lokalen E-Mail nachsehen, von der cron
die Fehler gesendet werden. Sie können den Befehl mail
oder verwenden mailx
(als Root, da er von einer Root-Crontab stammt) oderschummelnund nur less /var/mail/root
um die Roh-Maildatei anzuzeigen.