Shell Logs überwachen
Hallo,
ich versuche mich gerade an einer Logfileüberwachung. Leider bin ich mit dem Thema noch nicht so vertraut und probiere mittlerweile schon ein bisschen. Das PowerShell Skript soll die Logdatei auf einen bestimmten String durchsuchen und wenn der String vorhanden ist eine E-Mail senden. Das Funktioniert auch soweit, nur in dem log Ordner erstellen sich nach der Zeit immer neue Log Dateien. Ich hatte es am liebsten so, dass er sich immer die nimmt die neu dazugekommen sind und die auf den String untersucht. (Das Skript wird über die Windows -Aufgaben gesteuert.)
Mein momentanes Skript sieht so aus:
ich versuche mich gerade an einer Logfileüberwachung. Leider bin ich mit dem Thema noch nicht so vertraut und probiere mittlerweile schon ein bisschen. Das PowerShell Skript soll die Logdatei auf einen bestimmten String durchsuchen und wenn der String vorhanden ist eine E-Mail senden. Das Funktioniert auch soweit, nur in dem log Ordner erstellen sich nach der Zeit immer neue Log Dateien. Ich hatte es am liebsten so, dass er sich immer die nimmt die neu dazugekommen sind und die auf den String untersucht. (Das Skript wird über die Windows -Aufgaben gesteuert.)
Mein momentanes Skript sieht so aus:
# Angaben für die if abfrage.
$DateipfadLogFile = "C:\Users\lkliegel\Documents\Projekte\Logfileüberwachung\JBossCursor-CRM_Port01_WWF.log.4"
$Fehlermeldung = "*Pinging the JVM took*"
# Daten für den Mail Versand
$EmailFrom = “*****@****.de”
$EmailTo = “******@*******.de”
$Subject = "Logfileüberwachumg”
$Body = “In der Datei: $DateipfadLogFile wurden Meldungen wie diese gefunden: Pinging the JVM took.”
$SMTPServer = “smtp.outlook.com”
# Passwort:
#$secure = read-host -assecurestring
$encrypted = convertfrom-securestring -secureString $secure -key (1..16)
$encrypted | set-content C:\Users\lkliegel\Documents\Projekte\Logfileüberwachung\encrypted.txt
$secure2 = get-content C:\Users\lkliegel\Documents\Projekte\Logfileüberwachung\encrypted.txt | convertto-securestring -key (1..16)
$UnsecurePassword = (New-Object PSCredential "username",$secure2).GetNetworkCredential().Password
# Abfrage der Log Datei auf eine bestimmte Fehlermeldung.
if ((Get-Content -Path "$DateipfadLogFile") -like $Fehlermeldung)
# Wenn es wahr ist wird eine E-Mail verschickt.
{
write-host "gefunden"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential(“*******@******.de”, “$UnsecurePassword”);
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
}
# Es wurde keine Fehlermeldung gefunden.
else {
write-host "nicht gefunden"
}
Please also mark the comments that contributed to the solution of the article
Content-Key: 540718
Url: https://administrator.de/contentid/540718
Printed on: April 20, 2024 at 01:04 o'clock
7 Comments
Latest comment
$found = Get-ChildItem 'C:\Users\lkliegel\Documents\Projekte\Logfileüberwachung' -File -Recurse | ?{(gc $_.Fullname -raw) -like '*Pinging the JVM took*'}
if ($found.Count -gt 0){
# mail
}
oder auch
$found = Select-String 'C:\Users\lkliegel\Documents\Projekte\Logfileüberwachung\*.*' -Pattern 'Pinging the JVM took' -SimpleMatch -List | select -Expand Path
if ($found){
# mail
}
usw.....
Bitte dringend Code Tags im Thread benutzen !! So ist das vollkommen unleserlich !
FAQs mal vorher lesen hilft wirklich !!
Formatting instructions in the posts
Kann man übrigens auch immer noch nachträglich unten rechts über den "Bearbeiten" Button korrigieren ! Die Forums Community wird es dir danken.
FAQs mal vorher lesen hilft wirklich !!
Formatting instructions in the posts
Kann man übrigens auch immer noch nachträglich unten rechts über den "Bearbeiten" Button korrigieren ! Die Forums Community wird es dir danken.
Zitat von @Alfredo64:
Hallo Serial,
vielen Dank für die schnelle ich habe es mit der zweiten Varieante versucht die Funktioniert auch schon einigermaßen obwohl sie Fehler mit ausgibt was ich nicht verstehe:
Ist doch eindeutig, dir fehlen die Zugriffsrechte .Hallo Serial,
vielen Dank für die schnelle ich habe es mit der zweiten Varieante versucht die Funktioniert auch schon einigermaßen obwohl sie Fehler mit ausgibt was ich nicht verstehe:
sls : Die Datei "C:\Users\lkliegel\Documents\Projekte\Logfileüberwachung\logs" kann nicht gelesen werden: Der Zugriff auf den Pfad "C:\Users\lkliegel\Documents\Projekte\Logfileüberwachung\logs"
> wurde verweigert..
> In Zeile:1 Zeichen:10
> + $found = sls 'C:\Users\lkliegel\Documents\Projekte\Logfileüberwachung ...
können sie eventuel noch ein zwei sätze dazu schreiben was doert passiert ich würde es gerne auch ein bisschen verstehen.
Bitte, alles was du wissen musst steht hier: Select-String
Der erste Schritt zum Guru .