Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Frage Entwicklung Batch & Shell

BASH: Logfile nach enthaltenem Datum auswerten?

Mitglied: Brennerlein

Brennerlein (Level 1) - Jetzt verbinden

29.08.2013 um 13:50 Uhr, 2806 Aufrufe, 7 Kommentare

Hallo an alle,

Ich habe ein Logfile welches ca. alle 5 Minuten mit einer neuen Zeile befüllt wird. Das Log sieht so aus (Auschnitt):

2013-08-23_14:07:31 CUL_EM_6 CNT: 36 CUM: 1835.982 5MIN: 0.280 TOP: 0.480
2013-08-23_14:17:31 CUL_EM_6 CNT: 38 CUM: 1836.046 5MIN: 0.380 TOP: 0.470
2013-08-23_14:22:31 CUL_EM_6 CNT: 39 CUM: 1836.080 5MIN: 0.410 TOP: 0.480
2013-08-23_14:22:31 CUL_EM_6 CNT: 39 CUM: 1836.080 5MIN: 0.410 TOP: 0.480
2013-08-23_14:32:31 CUL_EM_6 CNT: 41 CUM: 1836.152 5MIN: 0.450 TOP: 0.610
2013-08-23_14:37:31 CUL_EM_6 CNT: 42 CUM: 1836.200 5MIN: 0.580 TOP: 0.660
2013-08-23_14:42:31 CUL_EM_6 CNT: 43 CUM: 1836.241 5MIN: 0.490 TOP: 0.610
2013-08-23_14:47:31 CUL_EM_6 CNT: 44 CUM: 1836.284 5MIN: 0.510 TOP: 0.570
2013-08-23_14:52:31 CUL_EM_6 CNT: 45 CUM: 1836.315 5MIN: 0.370 TOP: 0.560
2013-08-23_14:57:31 CUL_EM_6 CNT: 46 CUM: 1836.363 5MIN: 0.570 TOP: 0.680
2013-08-23_15:02:31 CUL_EM_6 CNT: 47 CUM: 1836.389 5MIN: 0.320 TOP: 0.660
2013-08-23_15:07:31 CUL_EM_6 CNT: 48 CUM: 1836.413 5MIN: 0.290 TOP: 0.450
2013-08-23_15:12:31 CUL_EM_6 CNT: 49 CUM: 1836.465 5MIN: 0.620 TOP: 0.710
2013-08-23_15:17:31 CUL_EM_6 CNT: 50 CUM: 1836.518 5MIN: 0.640 TOP: 0.700

Relevant ist für mich der CUM Wert. Das ist ein Zählerstand der sich ständig erhöht.
Ich möchte nun gerne den Verbrauch der letzten Stunde, des letzten Tages, Monat und Jahr ermitteln.

Zur Zeit behelfe ich mir damit (z.B. für den Stundenwert) einfach den aktuellsten CUM Wert auszucutten und die zwölfte Zeile davor (1h=60Min; 60Min/5Min=12) ebenfalls den CUM Wert rauszucutten und aus diesen dann die Differenz zu ermitteln.

Ihr werdet jetzt wahrscheinlich die Hände über den Kopf zusammenschlagen, aber ich weiß mir nicht anders zu helfen.
Das eigentliche Problem bei meiner Methode sind fehlende Datenpakete. Wenn der Empfänger ein Paket nicht mitbekommt, wird auch nicht im Log geschrieben. Das kommt häufig vor. Mit meiner Methode kommen dann natürlich zu große Differenzen zu stande weil ich ja dann, wie im Beispiel, nicht die Differenz von 1h habe sondern eben auch mal von 1h15min. Bei den Tages/Monats/Jahresberechnung ist der Wert dann schon enorm falsch.

Aus diesem Grund würde ich gerne den Timestamp nutzen, habe aber keine Ahnung wie ich das mit einem Bashscript hinbekomme.
Mitglied: 106543
29.08.2013 um 14:06 Uhr
Hi,

Batch hat keine Funktionen zur Datumsbrechnung, ich kann dir von daher nur VBS empfehlen.
Davon hab ich zwar selbst keine Ahnung, aber @colinardo könnte hier helfen

Grüße
Exze
Bitte warten ..
Mitglied: Brennerlein
29.08.2013 um 14:11 Uhr
Zitat von 106543:
Hi,

Batch hat keine Funktionen zur Datumsbrechnung, ich kann dir von daher nur VBS empfehlen.


Batch? Wie kommste da drauf? Ich brauche es in der Linux Bash/Shell
Bitte warten ..
Mitglied: 106543
29.08.2013 um 14:12 Uhr
Hi,

ah sorry verlesen :D
da kann ich dir leider trotzdem nicht weiterhelfen

Grüße
Exze
Bitte warten ..
Mitglied: Snowman25
29.08.2013, aktualisiert um 14:16 Uhr
Hallo Brennerlein,

So wie dein Beispiel-File aussieht, gibt es ja wohl keinen "Lag" in dem System (wodurchein Timestamp 15:05:59 und der nächste 15:11:00 wäre). Deshalb solltest du mit grep und awk glücklich werden können.
Ich bin über folgendes gestolpert: Zeitdifferenz in bash berechnen ~ StackOverflow

Hier mal ein Beispielskript, welches ich geschrieben habe, um die Quotas auf unserem Mailserver zu berechnen:
01.
#!/bin/csh 
02.
set HEADS=quotaheads.num 
03.
set BOTTOMS=quotabottoms.num 
04.
 
05.
if ( `id -u` != 0) then 
06.
        echo "This script must be run as root!" 
07.
else 
08.
        cd /var/imap/quota 
09.
        foreach i ( */* ) 
10.
                head -n 1 $i>>$HEADS 
11.
                tail -n 1 $i>>$BOTTOMS 
12.
        end 
13.
 
14.
        echo "Total used:" 
15.
                awk 'BEGIN{a=0}{a+=$1}END{a/=1073741824;print a " GB"}' $HEADS 
16.
        echo "Total allocated:" 
17.
                awk 'BEGIN{a=0}{a+=$1}END{a/=1048576;print a " GB"}' $BOTTOMS 
18.
        rm $HEADS 
19.
        rm $BOTTOMS 
20.
endif
Hoffentlich hilft das, dir AWK besser verständlich zu machen. Es ist relativ kompliziert, sich in AWK einzuarbeiten.
1073741824 und 1048576 sind bloß Umrechungsfaktoren und nicht von weiterer Bedeutung.

Gruß,
Snowman25
Bitte warten ..
Mitglied: Brennerlein
29.08.2013 um 14:34 Uhr
Da hast du mir ja einige Ansätze aufgezeigt.

Ich bin gerade auf einen zusätzlichen Gedanken gekommen.

Könnte man nicht über einen cron Job jede Stunde, jeden Tag, jede Woche, jedes Jahr, ein Script anstoßen welches den CUM Wert in eine Datei schreibt. Dann hätte ich ja quasi zwei Werte die ich nur noch subtrahieren müsste und das Timing wird dem OS überlassen.

Könnte das funktionieren?
Bitte warten ..
Mitglied: 108012
29.08.2013 um 14:54 Uhr
Hallo,

Könnte das funktionieren?
Ja sicher wenn;
- Wenn Du anacron dafür nimmst ist es sogar ohne booten möglich!
- wenn alle beteiligten die selbe Uhrzeit haben
- wenn die Uhrzeit richtig ist

Aber man kann ja auch zwei ShellScripte laufen lassen!

Eines das immer nachschaut welches Datum und welche Uhrzeit gerade ist und dann gegebenenfalls das andere Script startet
und Dir zum Schluss eine Mail an den den Systemverwalter namens root oder an Dein echtes Postfach schickt!

Gruß
Dobby
Bitte warten ..
Mitglied: Brennerlein
29.08.2013 um 16:23 Uhr
Danke für die bisherigen Tipps,

ich werd mal schauen was ich daraus machen kann!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Bash sqlplus oder Bash Fehler?
Frage von MarabuntaBatch & Shell7 Kommentare

Hallo, da ich sehr eingeschränkt in Bash bin, brauche ich hier etwas Hilfe. Was stimmt mit dem EOF nicht? ...

Batch & Shell
Bash scripting
gelöst Frage von HighShooterBatch & Shell3 Kommentare

Hallo, für meinem Server auf Debian 8 soll ich einen Script schreiben; der sollte folgendes beinhalten: eine Datei von ...

Batch & Shell
PS - RegEx: Logfile mit aktuellem Datum filtern + Mehrere Pfade unter einer Variable
gelöst Frage von ParaneusBatch & Shell5 Kommentare

Hallo Zusammen Ich habe ein Powershell Skript in dem ich Logfiles kopiere. Nun möchte ich nur das neuste Logfile ...

Netzwerke
SFlows auswerten
Frage von cgicloudNetzwerke2 Kommentare

Hallo zusammen, bin gerade am Einrichten von sFlows. Das Einsammeln und Ausgeben der Flows an sich funktioniert problemlos. Allerdings ...

Neue Wissensbeiträge
Router & Routing

PfSense als Addon auf QNAP

Information von magicteddy vor 2 StundenRouter & Routing

Moin, für Spielereien eine ganz nette Idee aber ich fürchte das soetwas auch als echte Firewall genutzt wird: In ...

Datenschutz

Teamviewer kommt für IoT-Geräte wie den Raspberry Pi

Information von magicteddy vor 9 StundenDatenschutz

Moin, jetzt werden IoT Geräte endgültig zur Wanze? Anscheinend kann man auf einem Dashboard seine Geräte visualisieren Ich stelle ...

Microsoft

Letzte Updates für Win10 und Server2016 müssen bei Bedarf über den Update catalogue in den WSUS importiert werden!

Tipp von DerWoWusste vor 13 StundenMicrosoft1 Kommentar

automatisch kommt da nichts an im WSUS und auch nicht im SCCM. Siehe Hinweise zum Bezug der jeweils neuesten ...

Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 3 TagenLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Heiß diskutierte Inhalte
Netzwerkmanagement
Preis für Wartungsvertrag ok?
gelöst Frage von a-za-zNetzwerkmanagement22 Kommentare

Hallo! Mal ne Frage, weil ich mich mit dem akzeptablen Preis für einen Reaktionszeitvertrag nicht auskenne. Meine Firma hat ...

Windows Netzwerk
Ist ein Portforwarding auf einen PC ohne lauschendes Programm ein (großes) Sicherheitsproblem?
Frage von PluwimWindows Netzwerk13 Kommentare

Hallo zusammen, zur Fernwartung eines Rechners an einem anderen Ort nutze ich VNC. Da dieser Rechner einfach nur eine ...

SAN, NAS, DAS
Wer kennt sich mit QNAP und CISCO aus ?
gelöst Frage von MachelloSAN, NAS, DAS10 Kommentare

Hallo Zusammen hier im Forum, Ich habe ein QNas 451+ und dieses NAS hat zwei GBit Lan Adapter die ...

Windows Server
Terminal Server 2016 erkennt Berechtigungen nicht
gelöst Frage von Thomas2Windows Server10 Kommentare

Hallo Administratoren, folgendes Problem stellt sich dar: Es gibt zwei Windows Server 2016, die als Terminal Server fungieren. Jetzt ...