
Ich versuche, ein Skript zu schreiben, das auf einer Pufferbox verwendet wird und den gesamten Netzwerkverkehr erfasst. Da es sich um ein ziemlich großes Netzwerk handelt, teilen wir die Erfassungen in 100-MB-Segmente auf. In Zeiten mit hohem Netzwerkverkehr, oft über einen Zeitraum von einer Minute, haben wir mehrere PCAPs, die diesen Zeitraum abdecken.
Ich möchte also ein Bash-Skript haben, mit dem der Analyst, der nach etwas sucht, ein Datum und eine Uhrzeit angeben kann und wie viele Minuten davor und danach er nach Dateien suchen möchte. Offensichtlich kann ich so etwas machen -
ls -al | grep "Dec 1" | grep 02:00
ls -al | grep "Dec 1" | grep 02:01
und so weiter, hole mir jedes Ergebnis und durchsuche jede Datei einzeln nach dem spezifischen Schlüsselwort, nach dem ich suche. Ich möchte aber eine breitere Suche nach allen Dateien durchführen können, die innerhalb eines bestimmten Zeitraums erstellt wurden, und dann jede einzelne davon nach dem Schlüsselwort durchsuchen.
Ich bin nicht ganz sicher, wie das geht. Ich wäre für jede Hilfe dankbar.
Antwort1
Einige der tollen Dinge, die find
(unter GNU/Linux) für Sie tun können:
Einheiten:
n
genauNuntis-n
weniger alsNEinheiten+n
mehr alsNEinheiten -
Was ist passiert:
-atime
: letztes Malaufgerufen-ctime
: Änderungen amDatei selbst(Berechtigungen, Eigentümer, …), nicht der Inhalt-mtime
:Inhalt der Dateigeändert-amin n
:NMinuten Alter-atime n
:Nvor Tagen (24 Stunden)- gleiches gilt für
ctime/min
undmtime/min
)
Daher:
find -atime -30
→ letzter Zugriff vor weniger als 30 Tagenfind -ctime +5
→ vor mehr als 5 Tagen, Änderungen an der Datei selbstfind -mtime +2 -31
→ Der Inhalt der Datei hat sich vor mehr als zwei Tagen, aber weniger als 31 Tagen geändert
auch - -daystart
: nach heute, 0.00h
Grepping
find
Sachen -exec grep {} \;
→; der letzte Teil ( {} \;
) ist wichtig - beachten Sie den einzelnen Leerraum zwischen {}
und\;
Die -exec
Optionen ermöglichen die Einbindung weiterer Befehle infind
Antwort2
find -iname "" -mtime -7 -exec zgrep "" {} \;
Zum Beispiel
find /opt/WebSphere/AppServer/profiles/application/logs/ -iname "SystemOut*" -mtime -7 -exec zgrep "FileNotFoundException" {} \;
Es sucht im Verzeichnis /opt/WebSphere/AppServer/profiles/application/logs/ nach Dateien, die in den letzten 7 Tagen mit „SystemOut“ beginnen, und nach der Zeichenfolge „FileNotFoundException“.