lapvika
Goto Top

Bestimmtes Datum von einem file auslesen - Linux

Hallo zusammen,

ich möchte mir in Linux aus der /var/log/messages Dateiinhalte der letzten 24 Stunden anzeigen lassen, alles was davor in die Datei geschrieben wurde möchte ich nicht sehen.

Beispiel:

ich habe eine Datei in der steht

Aug 24 09:41:54 hier steht text 1
Aug 26 13:06:08 hier steht text 2
Sep 2 03:04:26 hier steht text 3
Sep 2 03:04:33 hier steht text 4
Sep 2 03:08:41 hier steht text 5
Sep 2 12:41:43 hier steht text 6
Sep 2 12:43:33 hier steht text 7

Ich benötige jedoch nur die Dateiinhalte der letzten 24 Stunden, also dass man mit date das aktuelle Datum ausliest und sich dann die letzten 24 Stunden ausgeben lässt und der Rest nicht mehr zu sehen ist.

Beispielsweise ist es Sep 3 12:44 Uhr, dann sollte die Ausgabe so aussehen:

Sep 2 12:41:43 hier steht text 6
Sep 2 12:43:33 hier steht text 7

Wenn es Sep 3 13:00 Uhr ist soll die Ausgabe leer sein also nichts zu sehen sein.

Ich habe es schon hiermit versucht

grep `(date +"%b %d %H:" -d "24hours ago")` /var/log/messages

jedoch funktioniert es damit nicht.

Kennt jemand die Lösung meines Problems?

Vielen Dank schon mal!

Content-Key: 248180

Url: https://administrator.de/contentid/248180

Printed on: April 19, 2024 at 00:04 o'clock

Member: Lochkartenstanzer
Lochkartenstanzer Sep 03, 2014 updated at 12:50:30 (UTC)
Goto Top
Moin,

das funktioniert so mit grep nicht. Du müßtest ein Skript oder Programm schreiben, daß die logdateie einliest, die einträge am zeilenende interpretiert und dann diese ausgibt, falls die neuer sind als das gewünschte Datum.


Wenn es allerdings ab Mitternacht des Vortages auch geht, ist es einfacher:

grep  "^`date -d yesterday \"+%b %_d\"`" /var/log/syslog ; grep  "^`date \"+%b %_d\"`" /var/log/syslog

lks
Member: lapvika
lapvika Sep 03, 2014 updated at 13:08:47 (UTC)
Goto Top
Hallo, danke erst einmal.

Ich muss dazu sagen, dass ich da noch ein Anfänger in diesem Bereich bin ich bin gerade dabei mich einzuarbeiten.

Wie funktioniert das ganze für ein Zeitintervall, beispielsweise 5 Minuten. Also das alles was innerhalb der letzten 5 Minuten in die messages geschrieben wurde angezeigt wird, alles was älter als 5 Minuten ist nicht mit angezeigt wird?

Vielen Dank!
Member: Lochkartenstanzer
Lochkartenstanzer Sep 03, 2014 at 13:10:46 (UTC)
Goto Top
Zitat von @lapvika:

Wie funktioniert das ganze für ein Zeitintervall, beispielsweise 5 Minuten. Also das alles was innerhalb der letzten 5
Minuten in die messages geschrieben wurde angezeigt wird, alles was älter als 5 Minuten ist nicht mit angezeigt wird?


wie ich schon sagte: Du mußt die Daten am anfang der zeile einlesen udn interpretieren. durch einfaches grep funktioniert das nicht.

lks
Member: lapvika
lapvika Sep 03, 2014 at 13:18:50 (UTC)
Goto Top
Ok,

und wie genau macht man sowas?

Vielen Dank!
Member: Lochkartenstanzer
Lochkartenstanzer Sep 03, 2014 updated at 13:23:34 (UTC)
Goto Top
Zitat von @lapvika:

Ok,

und wie genau macht man sowas?


Indem man ein prgramm schreibt, daß aus Monat, tag und Uhrzeit eine Zahl macht, die man dann mit dem refenrzdatum vergleicht.

Alternativ kann man auch sukzessive Monat, tag, Stunde, Minute, und sekunde vergleichen, ist aber meist aufwendiger zu formulieren.

lks
Member: lapvika
lapvika Sep 03, 2014 at 13:25:12 (UTC)
Goto Top
"Indem man ein prgramm schreibt, daß aus Monat, tag und Uhrzeit eine Zahl macht, die man dann mit dem refenrzdatum vergleicht."


Wie genau sieht so etwas aus?

Wie gesagt ich bin da noch ganz frisch in der Materie.

Danke für die Hilfe!
Member: colinardo
Solution colinardo Sep 03, 2014, updated at Sep 04, 2014 at 05:43:01 (UTC)
Goto Top
Moin,
Zitat von @lapvika:
Wie genau sieht so etwas aus?
z.B. so:
#!/bin/bash
date1=$(date '+%s')  
date2=$(date -d "24 hours ago" '+%s')  
while read line
do
    line_date_sec=$(date -d "$(echo "$line" | awk '{print $1,$2,$3}')" '+%s')  
    if [[ $date2 -le $line_date_sec && $date1 -ge $line_date_sec ]];then
    	echo "$line"  
    fi
done < /var/log/messages
Grüße Uwe
Member: Lochkartenstanzer
Lochkartenstanzer Sep 03, 2014 at 13:56:17 (UTC)
Goto Top
Zitat von @lapvika:

Wie genau sieht so etwas aus?

Siehe uwes Skript.

Wie gesagt ich bin da noch ganz frisch in der Materie.

Dann soltest Du anfangen, dich damit zu beschäftigen:

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

lks
Member: lapvika
lapvika Sep 04, 2014 at 05:42:55 (UTC)
Goto Top
Vielen Dank Uwe,

hast mir sehr geholfen.

Gruß
lapvika