[LINUX] Extrahieren Sie den Statuscodefehler der Serie 400.500 von Apache (kombiniert_tsv), indem Sie den Zeitbereich angeben.

Da ich in der HH: MM: SS-Notation angeben möchte, verwenden Sie sed, um den Zeitteil unabhängig zu machen. Die Portnummer am Ende der IP wird übrigens auch weggelassen. Durch Angabe der Start- und Endzeit in HH: MM: SS wird der Statuscode innerhalb der angegebenen Zeit eingestellt. Es ist möglich, die Zeile zu extrahieren, die den Fehlercode darstellt.

python


sed -r -e\ 's/(:[0-9]{4,5}|\/202[0-9]:)/ /'{,} /var/log/apache2/20200715/access_log | awk '"HH:MM:SS" <=$5&&$5<= "HH:MM:SS" {if($10>=400&&$10<=599)print $0}'

Als ich es tatsächlich benutzte, funktionierte es wie erwartet, aber es war ziemlich mühsam, die Zeit zu bearbeiten. Ist es also möglich, eine Stunde vor der aktuellen Zeit anzuzeigen, ohne sich die Mühe zu machen, sie zu bearbeiten? Als Ergebnis des Denkens entschied ich mich, Datum zu verwenden und awk die Variable definieren zu lassen.

python


sudo sed -r -e\ 's/(:[0-9]{4,5}|\/202[0-9]:)/ /'{,} /var/log/apache2/20200715/access_log | awk -va=`date -d "60 minute ago" +%H:%M:%S` -vb=`date +%H:%M:%S` '{if($5>a&&$5<b&&$10>=400&&$10<=599)print $0}'

Wenn Sie die Ausgabe etwas reduzieren möchten, geben Sie das zu druckende Teil an.

Recommended Posts

Extrahieren Sie den Statuscodefehler der Serie 400.500 von Apache (kombiniert_tsv), indem Sie den Zeitbereich angeben.
Extrahieren Sie den Statuscodefehler der Serie 400.500 des Apache-Zugriffsprotokolls, indem Sie den Zeitbereich angeben
Lesen Sie die Datei, indem Sie den Zeichencode angeben.