freaggle
Goto Top

Zeile nach Wortfund ausgeben - Jedoch immer vom aktuellsten Datum

Hallo zusammen,

Habe mit toller Hilfe hier aus dem Forum eine Batch zur Suche nach Schlagwörtern zusammengebastelt.
Das läuft auch.
Habe nun jedoch ein neues Problem.
Ich suche wieder in einer Datei nach einem Schlagwort.
Kommt das Wort vor, soll er mir einen Teil der Zeile ausgeben, in der das Wort vorkommt. Das würde ich glaube ich noch hinbekommen..
Kommt das Wort öfters vor, soll er mir jedoch nur die Zeile ausgeben, in welcher das aktuellste Datum mit Zeit steht...
Kann so etwas mit einer Batch überhaupt funktionieren?

Hier mal meine Versuche so far:

@echo off
cd..
cd..
cd..
cd Backup_Report

call ANSI.bat
set "fail=0"  
set "kritisch=0"  
for /f "delims=" %%s in ('findstr /c:"[Major" c:\Backup_Report\BackupErrors.txt') do set /a fail+=1  
for /f "delims=" %%s in ('findstr /c:"[Critical" c:\Backup_Report\BackupErrors.txt') do set /a kritisch+=1  

IF  %fail% GTR 0 (
    echo Kritischer Fehler beim Backup. Bitte pruefen
    GOTO critical
)
IF  %kritisch% GTR 0 (
    echo Warnung beim Backup. Bitte pruefen
    GOTO warning
)

IF  %fail% == 0 (
    echo Backup ok
    GOTO ok
)
IF  %kritisch% == 0 (
    echo Backup ok
    GOTO ok
)
:ok 
exit /b 0 
:warning 
exit /b 1 
:critical 
exit /b 2


Mfg

Content-Key: 182572

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

Printed on: April 16, 2024 at 09:04 o'clock

Mitglied: 60730
60730 Mar 26, 2012 at 07:30:45 (UTC)
Goto Top
Moin,

Bitte verzeih mir, aber batches, die nicht laufen und die ohne code tags, dafuer aber mit fuehrendem €cho off geschrieben werden.
Da macht langsam wirklich gar keinen spass mehr.

Gruss

Ps edit
/edit
Jupp
kommentar bearbeiten funktioniert.
Member: pieh-ejdsch
pieh-ejdsch Mar 26, 2012 at 07:37:26 (UTC)
Goto Top
moin freaggle,

sehe ich das Richtig, dass Du eine Logdatei für mehrere Backupprozesse benutzt?
Dann muss Dir aber das Datum (letztes aktuellstes Datum) von diesem Backup bekannt sein, um die Zeile Herauszufiltern.
Wenn Du in den besagten Zeilen immer ein Datum mitstehen hast, dann Such nach dem Datum der letzten Änderung des Log.

setlocal
set "Fail="  
set "critical="  
set "Log=c:\Backup_Report\BackupErrors.txt"  
for /f %%i in ('dir "%LOG%" ^|findstr /b [0-9]') do set "LastLogDate=%%i"   
for /f "delims=" %%i in ('find "%LastLogDate%" "%Log%" ^|find "[Critical" ') do set "Critical=1" &echo Warnung beim Backup. Bitte pruefen &echo %%i &exit /b 2  
for /f "delims=" %%i in ('find "%LastLogDate%" "%Log%" ^|find "[Major" ') do set "Fail=1" &echo Warnung beim Backup. Bitte pruefen &echo %%i &exit /b 1  

exit /b 0

PS. Text/CodeFormatierung haben wir hier auch

Gruß Phil
Member: Lochkartenstanzer
Lochkartenstanzer Mar 26, 2012 at 08:21:24 (UTC)
Goto Top
Member: bastla
bastla Mar 26, 2012 at 08:49:36 (UTC)
Goto Top
@ph
Die Anforderung "aktuellstes Datum" würde ich im Zweifelsfall einfach durch eine Sortierung vorweg realisieren - nach welcher Spalte dabei zu sortieren wäre, fällt aber offensichtlich unter "Geheimhaltung" (die der TE trotz Hinweis in seinem vorigen Thread weiterhin aufrecht erhält) ...

Grüße
bastla
Member: pieh-ejdsch
pieh-ejdsch Mar 26, 2012 at 09:20:48 (UTC)
Goto Top
moin bastla,

naja, Datum Sortieren hätte dann aber nur Sinn, wenn das Format
YYYYMMDD
genommen wird. Bzw. kleinere Einheiten den größeren Folgen.
wenn in der Zeile nach DATUM a oder b oder Z folgt ist die Sortierung nach DD.MM.YYYY erfolglos bzw. nicht wie erwartet.

dir |sort +3

PS. wenn Zweifelsfall bedeutet das Backup ging über die Tagesgrenze?

Gruß Phil
Member: bastla
bastla Mar 26, 2012 at 09:53:21 (UTC)
Goto Top
@ph
Zweifelsfall bedeutet das Backup ging über die Tagesgrenze?
Soll ja auch vorkommen - tatsächlich aber fehlen mir ganz grundsätzlich Informationen über den Aufbau der Datei ...

Grüße
bastla
Member: freaggle
freaggle Mar 26, 2012 at 09:59:47 (UTC)
Goto Top
Das @echo off habe ich hier aus dem Forum übernommen...


@bastla
Welche Infos benötigst du?

So sieht ein Teil der Log-Datei aus:

Major] From: VBDA@Server1" Q: [Quorum]" Time: 26.03.2012 00:24:49
[81:72] Q:
Cannot verify filesystem mount point: ([3] Das System kann den angegebenen Pfad nicht finden. ).

[Critical] From: VBDA@Server2 "Q: [Quorum]" Time: 26.03.2012 00:24:49
[81:52] /Q
Not a valid mount point => aborting.

Es wird ein Backup von den Servern durchgeführt und auftretende Fehler in dieser Datei sortiert nach Server und Datum + Uhrzeit aufgelistet.
Als Ausgabe auf Nagios benötige ich jedoch nur den letzten Fehler, sprich "Server XY, Datum, Uhrzeit
Die Fehlermeldung an sich ist erstmal nicht so wichtig.

@pieh-ejdsch
Danke dir. Das funktioniert schon mal wunderbar. Jetzt müßte ich neben dem Datum noch die Uhrzeit mit abfragen können
Member: pieh-ejdsch
pieh-ejdsch Mar 26, 2012 at 12:14:15 (UTC)
Goto Top
wenn Die anderen Server egal sind, dann in etwa so

setlocal
set "[Major]="  
set "[Critical]="  
set "Log=c:\Backup_Report\BackupErrors.txt"  
for /f %%a in ('dir "%LOG%" ^|findstr /b [0-9]') do for /f "tokens=1,3,7,8" %%i in ('find "%%a" "%Log%" ^|findstr /L "[Critical] [Major]" ') do set "%%i=%%j,%%k,%%l"  

if defined [Critical] echo Warnung beim Backup. Bitte pruefen &echo %[Critical]% &exit /b 2
if defined [Major] echo Warnung beim Backup. Bitte pruefen &echo %[Major]% &exit /b 1
exit /b 0

Wenn wirklich nur die Letzte Meldung Massgebend sein sollte, eine Feste Variable abfragen.

Gruß Phil
Member: freaggle
freaggle Mar 26, 2012 at 14:13:17 (UTC)
Goto Top
Der Server wäre schon wichtig, damit man direkt sehen kann, um welche Maschine esich handelt.
Und bi dem obigen Beispiel spuckt er einfach die letzen Einträge von Major und Critical in der Datei aus.
Die Uhrzeit ist dabei irrelevant.Die wäre aber auch wichtig