tail und grep, log-und E-mail (linux)
ich will tail-log-Datei mit grep und schickte ihn per E-mail
wie:
tail -f /var/log/foo.log | grep error | mail -s subject name@example.com
wie kann ich dies tun?
- Die Frage ist, wie "ich habe
print('Foo');
und ich will es print 'Foo'. Wie mache ich das?" Was genau ist Ihre Frage? - Sie wollen wahrscheinlich nicht
tail
-f diese werden kontinuierlich Folgen Sie den unteren Rand der Datei.grep
nicht tail - Protokolle, entweder. Was ist das problem, das Sie lösen möchten? tail -f .. | grep ...
ist die Ausgabe von Daten angehängt, wie die Datei wächst und bei Verwendung von grep, nur drucken append-Zeilen, die passen nur- Nicht Programmieren...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Möchten Sie eine E-Mail senden E-Mail, wenn Fehler auftreten? Ausfallen 😉
Können Sie allerdings versuchen, so etwas wie dieses:
Welche für jede Zeile in der grep-Ausgabe sendet eine E-Mail.
Laufen über shell-Skript mit
also es läuft weiter im hintergrund.
&
,&&
und||
)Ich werde dieses. Vielleicht werde ich etwas lernen, wenn meine dreckige bash-code wird unter die Lupe genommen. Es ist eine chance, es gibt bereits eine Unmenge von Lösungen, um dies zu tun, aber ich werde nicht herausfinden, wie ich bin sicher, Sie haben zudem die tiefen und breiten der cyberocean. Es klingt wie das, was Sie wollen, kann getrennt werden in zwei bits: 1) in regelmäßigen Abständen erhalten Sie die neuesten Schwanz " der Datei, 2), wenn der Letzte Schwanz tatsächlich vorhanden ist, senden Sie es per e-mail. Für die regelmäßigen Intervallen-in-1), cron verwenden. Für die Beschaffung der neuesten Rute in 2), müssen Sie zu verfolgen die Größe der Datei. Das bash-Skript aufgeführt wird - es ist eine Lösung zu 2), die aufgerufen werden können, die von cron. Es verwendet die Cache-Datei-Größe zum berechnen der chunk, der die Datei, die es braucht, um E-mail. Beachten Sie, dass für eine Datei myfile die Datei .offset.myfile ist erstellt. Auch das Skript nicht erlauben Pfad-Komponenten in der Datei name. Umschreiben, oder fixieren Sie es in dem Aufruf [z.B. (cd /foo/bar && segtail.sh zut), vorausgesetzt, es ist genannt segtail.sh ].
env
. Die Ausgabe vonstat
ist sehr variabel zwischen den Systemen und Versionen(!). Vorausgesetzt, ein Aktuelles GNU stat, versuchen Sie,- c, um das lösen und vermeiden die Notwendigkeit zu analysieren.cat
benötigt:offset=$(<.offset.$file)
. Der zweite Teil derif [[ -e $file && $size > $offset ]]
ist ein lexikalischer Vergleich, damit Sie es nicht tun, was Sie erwarten, wenn, zum Beispiel,$size
== 10 und$offset
== 2. Verwenden Sie dieses anstatt:if [[ -e $file ]] && (($size > $offset))
. Können Sie weglassen Dollarzeichen in den meisten Fällen innerhalb(())
und$(())
.Wie etwa:
mail-s "catalina.Fehler" [email protected] < grep FEHLER catalina.aus