alfredo64
Goto Top

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:
# 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"  
}

Content-Key: 540718

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

Printed on: April 20, 2024 at 01:04 o'clock

Mitglied: 142232
Solution 142232 Jan 29, 2020 updated at 15:36:06 (UTC)
Goto Top
$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.....
Member: aqui
aqui Jan 29, 2020 updated at 15:03:14 (UTC)
Goto Top
Bitte dringend Code Tags im Thread benutzen !! So ist das vollkommen unleserlich ! face-sad
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.
Member: Alfredo64
Alfredo64 Jan 29, 2020 at 15:11:22 (UTC)
Goto Top
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 ...  

Ich habe es folgendermaßen umgesetzt:

$found = sls 'C:\Users\lkliegel\Documents\Projekte\Logfileüberwachung\*' -Pattern 'Pinging the JVM took' -SimpleMatch  
if ($found){
   
# Daten für den Mail Versand

$EmailFrom = “****@***”

$EmailTo = “***@***”

$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  




$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)

$SMTPClient.EnableSsl = $true

$SMTPClient.Credentials = New-Object System.Net.NetworkCredential(“****@*****”, “$UnsecurePassword”);
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)

}

können sie eventuel noch ein zwei sätze dazu schreiben was doert passiert ich würde es gerne auch ein bisschen verstehen.
Member: Alfredo64
Alfredo64 Jan 29, 2020 at 15:13:39 (UTC)
Goto Top
Danke für diesen Hinweis aqui. Ich habe es schon Bearbeitet.
Mitglied: 142232
142232 Jan 29, 2020 updated at 15:25:10 (UTC)
Goto Top
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:

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 ...  
Ist doch eindeutig, dir fehlen die Zugriffsrechte face-smile.

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
Member: Alfredo64
Alfredo64 Jan 29, 2020 at 15:52:12 (UTC)
Goto Top
Hallo Serial,

Bitte, alles was du wissen musst steht hier: Select-String

Ok vielen Danke ich werde mich jetzt noch ein bisschen damit befassen und bin erst einmal sehr foh das ich so gute Hilfe bekommen habe
Mitglied: 142232
142232 Jan 29, 2020 at 15:53:31 (UTC)
Goto Top
Zitat von @Alfredo64:
Ok vielen Danke ich werde mich jetzt noch ein bisschen damit befassen
Der erste Schritt zum Guru face-smile.