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

Datei auslesen mit wert aus einer liste vergleichen und wegschreiben

Mitglied: obacht

obacht (Level 1) - Jetzt verbinden

19.03.2012, aktualisiert 25.03.2012, 3033 Aufrufe, 7 Kommentare

Hallo zusammen,
ich versuche zeilenweise aus eine Datei die im Zugriff durch eine DB ist den letzten Eintag auszulesen und mit den Werten in suche-1 zu vergleichen, bei übereinstimmung die ganze Zeile in eine Datei zuschreiben. Sollte ich nicht lieber mit dem diesen Befehl bei einer geöffnet Datei arebiten , wenn die Datei bereits im Zugriff ist?

OpenAsTextStream([IOMode As IOMode = ForReading], [Format As Tristate = TristateFalse]) As Textstream

Grüße

01.
# Start-FileSystemWatcher der Powershell  
02.
import-module FileSystem 
03.
get-help Start-FileSystemWatcher  
04.
 
05.
set suche-1= (importfile; exportfile; DB02; error;) 
06.
 
07.
# String durchsuchen 
08.
$Pattern="suche1" 
09.
$LineCounter=0 
10.
$NumberOfLines=$(get-content -path "D:\db02.log").count 
11.
 
12.
Get-Content -path "D:\db02.log" -Wait | ForEach{ 
13.
 $LineCounter+=1 
14.
 If(($_ -match $Pattern) -and ($Linecounter -gt $NumberOfLines)){ 
15.
  
16.
Set-Content "d:\tag_meldungen.txt" -Value "$_"  
17.
 # in Datei schreiben 
18.
19.
}
[Edit Biber] Codeformatierung [/Edit]
Mitglied: 5t8d1e
20.03.2012 um 12:01 Uhr
Hallo,

also wenn ich es richtig verstanden habe suchst du ungefähr sowas:
01.
$pattern = "suche1" 
02.
get-content -wait D:\db02.log | where { $_ -match $pattern } | out-file -append d:\tag_meldungen.txt
wie immer bei mir quick and dirty

grüße
Torsten
Bitte warten ..
Mitglied: obacht
20.03.2012 um 21:29 Uhr
Hallo Thorsten,
diese Lösung ist besser als das was ich bisher habe, meine Lösung ist drei mal so lang werde mich an deiner Lösung orientieren.

Ich hänge aber gerader an einer anderen Stelle und zwar möchte ich den String in eine dynamisches Array einlesen und das 3 Arrayfeld (3 Absatz in der Zeile) mit einer Fehlerliste vergleichen.
In etwas so:

$pattern = "C:/Liste.txt" # Eine Liste mit diversen Fehlercodes und evenID siehe Beispiel unten
$Event_ID=" "
$Event_ID=" "

get-content -wait D:\db02.log | where { $_ -match $pattern } While ($StreamReader.Endofstream -eq $False){
$Line=$StreamReader.ReadLine( Write-Eventlog -logname 'DB02' -source 'work' -eventID $Event_ID -EntryType $_EntryType -message "$Line" )
}

Der Eintrag soll dann im Eventlog DB02 unter Windows zu finden sein.. leider schaffe ich es nicht den String richtig zu erzeugen / übergeben um im Array das 3 Feld mit der Liste vergleichen zu können. Was mach ich falsch?

Beispiel für die Fehlercode Liste in C./Liste.txt die je Treffer in die Variablen geschrieben werden ($Event_ID=" "; $Event_ID=" ")
ERRORCODE EventID EntryType
1. aeg45244S; 1252; error
2. jhhff56616L; 1000; warning
3. 456sgsv55K 2011 error
usw.
Bitte warten ..
Mitglied: 5t8d1e
21.03.2012 um 10:38 Uhr
ahoi,

Leider komme ich nicht mit deiner Erklärung nicht ganz klar. am besten schickst du mal 3-4 zeilen aus deinen logfile und 3-4 zeilen aus deiner Fehlercodeliste.
Und damit ich weiss wie das Ergebnis aussehen auch hier 1-2 Beispiele. Danach schauen wir mal was daraus gebastelt werden kann.

der Torsten ohne 'h'
Bitte warten ..
Mitglied: obacht
21.03.2012 um 15:21 Uhr
Ziel ist es das Log DB02.log in Echtzeit zu überwachen:

DB02.log Logdatei sieht so aus:
z.B.

22/03/2012 11:00:18 00255B313I Server is up
22/03/2012 11:00:18 045688G52I Object loaded.
23/03/2012 11:10:22 001CM027E Error. Cluster NGZ04
23/03/2012 11:42:22 0055TS528E Authentication failure from Printstation: 192.168.110.1
(Fehlercode)

Jeder Logeintrag der in das DB02.log geschrieben wird soll sofort auf Fehlercode, welcher in der Fehlematrix hinterlegt ist geprüft werden.


Fehlermatrix:

Fehlercode; EventID; Aktion (bei 1 wir ins Eventlog geschrieben bei 0 wird kein Eintrag geschrieben und der String verworfen.)

00255B313I; 0; 0
021CD02PW; 0; 0
001CM027E ; 9993; 1

Bei 1 wir ins Eventlog geschrieben bei 0 wird kein Eintrag geschrieben und der String verworfen.)

Kommt der Fehlercode in der Fehlermatrix vor und ist mit der 1 im dritten Feld gekennzeichnet, nur dann schreibe einen Eintrag in das Applikation-Eventlog von Microsoft Server.

Der Logeintrag soll die EvntID aus der Fehlermatrix enthalten und als Message den gesamten String (z. B. - 23/03/2012 11:10:22 001CM027E Error. Cluster NGZ04) enthalten.

Falls du noch weiter Informationen brauchst bitte melden.
Viele Grüße
Bitte warten ..
Mitglied: 5t8d1e
23.03.2012 um 08:55 Uhr
Ahoi obacht,


ich gugge mir das mal am WE an und dann schauen wir mal was bei rum.

Ansonsten Happy WE

der Torsten
Bitte warten ..
Mitglied: 5t8d1e
24.03.2012 um 18:11 Uhr
Ich bins wieder!

so das hier sollte funkitionieren
den Debugbereich kannst auskommentieren und das Script direkt mit den Parametern aufrufen

Bsp.: .\get-db2errors.ps1 -Fehlerliste .\known-errors.csv -DB2log .\db2.log -outfile .\errors.log

01.
Param ( 
02.
[string]$Fehlerliste, 
03.
[string]$DB2log, 
04.
[string]$outfile 
05.
06.
 
07.
###Debug### 
08.
[string]$Fehlerliste = "E:\tmp\get-DB2Errors\known-errors.csv" 
09.
[string]$DB2log = "E:\tmp\get-DB2Errors\db2.log" 
10.
[string]$outfile = "E:\tmp\get-DB2Errors\errors.log" 
11.
########### 
12.
 
13.
#import Fehlerliste 
14.
[array]$knownErrors = Import-Csv $Fehlerliste -Delimiter ";" 
15.
 
16.
Get-Content $db2log -wait | Foreach {  
17.
    $DB2Logerror = ($_.split(' '))[2] 
18.
    #$DB2Logerror 
19.
    $mymatch = $knownErrors -match $DB2Logerror | select Aktion 
20.
    if ($mymatch.Aktion -eq 1) { $_ | Out-File -FilePath $outfile -Append} 
21.
}
und nun ab ins WE
der Torsten

ps.: die csv sollte wie folgt aussehen
01.
Fehlercode;EventID;Aktion 
02.
00255B313I;0;0 
03.
021CD02PW;0;0 
04.
001CM027E;9993;1
Bitte warten ..
Mitglied: obacht
30.03.2012 um 12:23 Uhr
Hallo Torsten,
ich konnte mich leider nicht früher melden, die Lösung hat mir sehr geholfen, Danke.

Aktuell kämpfe ich mit folgender Fehlermeldung in der PS:

Write-EventLog : Cannot bind parameter 'EntryType'. Cannot convert value "C" to type "System.Diagnostics.EventLogEntryT
ype". Error: "Invalid cast from 'System.Char' to 'System.Diagnostics.EventLogEntryType'."


Meine Fehlermatrix.csv sieht so aus:
Fehlercode;EventID;EntryType;Aktion
VEP0501CE;VEP0501CE;Warning;1

Ich wollte den Fehlercode im Eventlog als EventID angeben.

welche Art von Platzhalter brauche ich bei dem Befehl Write-EventLog ?

Viele Grüße
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Powershell: Wert aus Registry auslesen und mit vorhandenem Wert vergleichen
gelöst Frage von BrowserlauserBatch & Shell5 Kommentare

Hallo, ich stehe vor folgendem Problem: Ich möchte per Powershell aus der Registry einen bestimmten Wert auslesen. Beispiel: in ...

Batch & Shell
Zwei Werte vergleichen in einer Batch-Datei
gelöst Frage von PatrickHeissi10Batch & Shell1 Kommentar

Ich möchte die beiden Variablen %eins% und %zwei% vergleichen haben diese den gleichen Wert haben-> goto einszwei Danke

Batch & Shell
Zwei TXT Datei vergleichen und zusammen eine Liste erstellen
gelöst Frage von 103148Batch & Shell3 Kommentare

Hallo, ich erstelle zwei Dateien, eine jede Abend mit dem Inhalt online.txt HOST PC001 ist online HOST PC023 ist ...

Microsoft Office
Excel Werte vergleichen
Frage von 103148Microsoft Office5 Kommentare

Hallo, ich habe eine Liste ( ca. 200 Einträge ) mit Kistengröße wie folgt: Länge, Breite, Höhe daneben wird ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 21 StundenLinux

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 ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 1 TagTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 1 TagSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 1 TagSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
Sicherheit
Meltdown und Spectre: Die machen uns alle was vor
Information von FrankSicherheit25 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Ubuntu
Ubuntu - Starter für nicht vertrauenswürdige Anwendungen
Frage von adm2015Ubuntu17 Kommentare

Hallo zusammen, Ich verwende derzeit die Ubuntu Versionen 17.10 bzw. im Test 18.04. Ich habe mehrere .desktop Dateien in ...

Windows 10
Automatische daten kopieren, USB zu USB unter Win10 im Hintergrund
Frage von DerEisigeWindows 1016 Kommentare

Hallo Leute, ich bin auf der Suche nach einem Skript, dass von einem USB Stick automatisch nach dem einstecken ...

SAN, NAS, DAS
Hilfe beim Einrichten eines Storages (SAN)
gelöst Frage von Vader666SAN, NAS, DAS15 Kommentare

Hallo Admins! Ich bin in einer kleineren Firma und hatte bisher mit dem Thema SAN nur in meiner Ausbildung ...