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 geändert. Es ist möglich, die Zeile zu extrahieren, die den Fehlercode darstellt.
qiita.rb
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.
qiita.rb
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