Wie deaktiviere ich Crontab-Listeneinträge im Cron-Protokoll?

Wie deaktiviere ich Crontab-Listeneinträge im Cron-Protokoll?

Ich habe ein Skript auf dem Server, das alle paar Minuten ausgeführt wird und unter anderem prüft, ob schädliche Crontab-Einträge eingeschleust wurden. Dazu überprüfe ich die Crontabs aller Benutzer, was ganz gut funktioniert, aber meine /var/log/cronDatei wird mit Einträgen aller Crontab-Listen gefüllt, sodass jedes Mal, wenn ich das Skript ausführe, alle Crontab-Listen wie folgt protokolliert werden:

Nov 30 17:16:02 myserv crontab[348610]: (root) LIST (root)
Nov 30 17:16:02 myserv crontab[348611]: (root) LIST (bin)
Nov 30 17:16:02 myserv crontab[348612]: (root) LIST (daemon)
Nov 30 17:16:02 myserv crontab[348613]: (root) LIST (adm)
Nov 30 17:16:02 myserv crontab[348614]: (root) LIST (lp)
Nov 30 17:16:02 myserv crontab[348615]: (root) LIST (sync)
Nov 30 17:16:02 myserv crontab[348616]: (root) LIST (shutdown)
Nov 30 17:16:02 myserv crontab[348617]: (root) LIST (halt)
Nov 30 17:16:02 myserv crontab[348618]: (root) LIST (mail)
Nov 30 17:16:02 myserv crontab[348619]: (root) LIST (operator)
Nov 30 17:16:02 myserv crontab[348620]: (root) LIST (games)
Nov 30 17:16:02 myserv crontab[348621]: (root) LIST (ftp)
Nov 30 17:16:02 myserv crontab[348622]: (root) LIST (smb)
Nov 30 17:16:02 myserv crontab[348623]: (root) LIST (named)
Nov 30 17:16:02 myserv crontab[348624]: (root) LIST (postgres)
Nov 30 17:16:02 myserv crontab[348625]: (root) LIST (mysql)
.....

daher füllt es die Protokolldatei unnötig. Ich habe mit verschiedenen Selektoren experimentiert, aber es scheint, dass bei der Auswahl cron.infoalle Informationen angezeigt werden, während cron.noticenicht angezeigt wird, wenn Crontab bearbeitet oder ausgeführt wurde, was mir wiederum in meinen Protokollen gefällt.

# Log cron stuff
cron.*                                                  /var/log/cron

cron.*scheint dasselbe zu sein wie „ cron.info Irgendwelche Ideen, wie man „LIST“-Einträge ausschließt?“, /var/log/cronwürde also so aussehen:

Nov 30 17:24:02 mysrv CROND[349831]: (root) CMDEND (/etc/cron.b/check nout >/dev/null 2>&1)
Nov 30 17:28:01 mysrv CROND[350781]: (root) CMD (/etc/cron.b/check nout >/dev/null 2>&1)

Antwort1

Versuchen Sie es mit cron.none. Wenn Sie *ein Sternchen ( * ) verwenden, entspricht dies null oder mehr Vorkommen.

Jetzt können Sie die Regel ändern, um das Protokoll in eine andere Datei zu verschieben/path/to/another/file

AKTUALISIEREN

Vergleichsoperationen

Die folgenden Vergleichsoperationen werden derzeit unterstützt:

enthält

Überprüft, ob die im Wert angegebene Zeichenfolge in der Eigenschaft enthalten ist. Es muss eine genaue Übereinstimmung vorliegen, Platzhalter werden nicht unterstützt.

ist gleich

Vergleicht die angegebene Zeichenfolge „value“ mit dem Eigenschaftsinhalt. Diese beiden Werte müssen genau gleich sein, um zu passen. Der Unterschied zu contains besteht darin, dass contains nach dem Wert an einer beliebigen Stelle innerhalb des Eigenschaftswerts sucht, während bei isequal alle Zeichen identisch sein müssen. Daher ist isequal am nützlichsten für Felder wie syslogtag oder FROMHOST, bei denen Sie wahrscheinlich den genauen Inhalt kennen.

beginnt mit

Überprüft, ob der Wert genau am Anfang des Eigenschaftswerts gefunden wird. Wenn Sie beispielsweise nach „val“ suchen mit

:msg, startswith, "val"

Es wird eine Übereinstimmung geben, wenn die Nachricht „Werte sind in dieser Nachricht“ enthält, aber es wird keine Übereinstimmung geben, wenn die Nachricht „Es gibt Werte in dieser Nachricht“ enthält (im letzteren Fall würde „enthält“ übereinstimmen). Bitte beachten Sie, dass „startswith“ bei weitem schneller ist als reguläre Ausdrücke. Selbst wenn sie implementiert sind, kann es (leistungsmäßig) sehr sinnvoll sein, „startswith“ zu verwenden.

regulärer Ausdruck

Vergleicht die Eigenschaft mit dem bereitgestellten POSIX BRE-regulären Ausdruck.

Abonnieren

Vergleicht die Eigenschaft mit dem bereitgestellten regulären POSIX ERE-Ausdruck.

Sie können das Ausrufezeichen (!) direkt vor einer Vergleichsoperation verwenden, das Ergebnis dieser Operation wird dann negiert. Wenn beispielsweise msg„Dies ist eine informative Nachricht“ enthält, würde das folgende Beispiel nicht übereinstimmen:

:msg, contains, "error"

aber das hier passt:

:msg, !contains, "error"

Die Verwendung von Negation kann nützlich sein, wenn Sie eine allgemeine Verarbeitung durchführen, aber bestimmte Ereignisse ausschließen möchten. Sie können die Aktion „Verwerfen“ in Verbindung damit verwenden. Ein Beispiel wäre:

*.* /var/log/allmsgs-including-informational.log
:msg, contains, "informational"  ~
*.* /var/log/allmsgs-but-informational.log

Die Tilde in Zeile 2 nicht übersehen! In diesem Beispiel werden alle Meldungen in die Datei allmsgs-inclusive-informational.log geschrieben. Anschließend werden alle Meldungen, die den String „informational“ enthalten, verworfen. Das heißt, die Zeilen der Konfigurationsdatei unterhalb der „Discard-Zeile“ (Nummer 2 in unserem Beispiel) werden auf diese Meldung nicht angewendet. Alle übrigen Zeilen werden dann ebenfalls in die Datei allmsgs-but-informational.log geschrieben.

Antwort2

Ich habe eine Lösung mit Filter gefunden, für alle, die interessiert sind. Ich habe über cron.info eine Anweisung eingefügt, um unerwünschte Nachrichten zu entfernen. Meine Lösung sieht also so aus:

:msg, contains, "(root) LIST"                           ~
cron.*                                                  /var/log/cron

jetzt werden alle Zeilen mit Einträgen mit „(root) LIST“ verworfen.

verwandte Informationen