none
gleiche Werte nur einmal ausgeben RRS feed

  • Frage

  • Hallo zusammen, 

    Also ich probiere es jetzt mal mein Anliegen soweit zu erklären... Ich versuche aus einem Logfile die erfolgreichen Verbindungen und Trennungen herauszufiltern und die Verbindungszeit auszugeben. Das schaffe ich unter Anderem auch durch Eure Hilfe auch. Jedoch bei Verbindungen ohne Ende (die noch offen sind) und über 1h gibt es stündlich eine Neu-Authentifizierung welche ich nicht augegeben haben möchte. Hat jemand eine Idee wie ich es schaffe nur jeweils die 1. Verbindung anzeigen zu lassen?

    $Data = Import-Csv $LogFile -Header Month, Null, Day, Time, Tag, M1, M2, M3 -Delimiter " " | Select-Object -Property Tag,
            @{ Name = 'Month'; Expression = { $_.Month}},
            @{ Name = 'Day'; Expression = { $_.Day}},
            @{ Name = 'Time'; Expression = { $_.Time}},
            @{ Name = 'M1'; Expression = { $_.M1}},
            @{ Name = 'M2'; Expression = { $_.M2}},
            @{ Name = 'M3'; Expression = { $_.M3}},
            @{ Name = 'DateTime'; Expression = { [DateTime]::ParseExact( $_.Day + ' ' + $_.Month + ' ' + $_.Time, 'd MMM HH:mm:ss', [Globalization.CultureInfo]::CreateSpecificCulture('en-US')) } } | Sort-Object DateTime
    
    ### Berechnung ###
    $result = for ( $i=0; $i -lt $data.Count; $i++ ) {
              if ( $data[$i].M3 -eq "authenticated" ) {
              $found = $false
                $j = $i + 1
                do {
                    if (($data[$i].M2.Trim("[","]","'") -eq $data[$j].M2.Trim("[","]","'")) -and ($data[$j].M3 -eq "Inactivity")) {
                        $found = $true
                            [PSCustomObject]@{
                            Beginn = $data[$i].DateTime
                            Benutzer = ($data[$i].M2).Trim("[","]","'")
                            Ende = ($data[$j].DateTime)
                            Dauer = New-Timespan -Start ($data[$i].DateTime) -End ($data[$j].DateTime)
                            }
                    } else {
                      $j++
                    } 
                    } until ($found -or ($j -eq $data.Count -1))
                      if (-Not $found) {  
                            [PSCustomObject]@{
                            Beginn = $Data[$i].DateTime
                            Benutzer = ($data[$i].M2).Trim("[","]","'")
                            }
                      }
                }
              } 

    03.04.2019 21:23:52 mario 03.04.2019 22:06:00 00:42:08 03.04.2019 22:05:37 xxx 03.04.2019 22:07:46 yyy 03.04.2019 22:23:29 zzz 03.04.2019 23:05:37 xxx 03.04.2019 23:07:46 yyy 03.04.2019 23:23:29 zzz

    Vielen Dank im Voraus und ich hoffe man kann mit meiner Beschreibung etwas anfangen.

    LGO

    Dienstag, 9. April 2019 07:55

Antworten

  • Bitte keine Bilder von Code oder Beispieldaten oder Output posten ... sowas ist meistens schwer zu lesen und zeimlich nutzlos.

    $object = @()
    Get-Content D:\sample\openVPN.log | 
    Select-String "authenticated|restarting|exiting" | 
    ForEach-Object {
        $obj = $null
        $obj = "" | Select-Object Time, Action, User
        $Rslt = $([RegEx]"(\w{3})\s+(\d+)\s+(\d{2}:\d{2}:\d{2})").Match($_)
    $DateTimeString = "{0} {1:d2} {2}" -f $Rslt.Groups[1], [INT]$Rslt.Groups[2].Value, $Rslt.Groups[3]
    $obj.Time = [datetime]::parseexact($DateTimeString, 'MMM dd HH:mm:ss', $null)
    IF ( $_.Matches.Value -eq "authenticated" ) { $obj.Action = "Log On" $obj.User = $([RegEx]"'.*'").Match($_).Value.Replace("'", "") } elseIF ( $_.Matches.Value -eq "exiting" ) { $obj.Action = "Log Out" $obj.User = $([RegEx]": .*/").Match($_).Value.Replace(": ", "").Replace("/", "") } elseIF ( $_.Matches.Value -eq "restarting" ) { $obj.Action = "Timeout" $obj.User = $([RegEx]": .*/").Match($_).Value.Replace(": ", "").Replace("/", "") } $object += $obj } $saved = $null $data = $object | Select-Object -Unique -Property * | Sort-Object -Property User,Time | ForEach-Object{ If($_.Action -ne $saved.Action){$_} $saved = $_ } for ($i = 0; $i -lt $data.Count; $i++ ) { if ($data[$i].Action -eq 'Log On' -and $data[$i + 1].Action -match 'Timeout|Log Out' -and $data[$i].User -eq $data[$i + 1].User) { [PSCustomObject]@{ User = $data[$i].User Start = $data[$i].Time Ende = $data[$i + 1 ].Time Dauer = New-TimeSpan -Start $($data[$i].Time) -End $($data[$i + 1].Time) } continue } elseif ($data[$i].Action -eq 'Log On') { [PSCustomObject]@{ User = $data[$i].User Start = $data[$i].Time Ende = '-' Dauer = '-' } } }

    Nur mal aus Neugier ... was stellst Du mit den Daten an? Wozu ist das Ganze gut?


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''


    • Als Antwort markiert ContrOliva Dienstag, 16. April 2019 10:44
    • Bearbeitet BOfH-666 Donnerstag, 18. April 2019 07:35 Code erweitert/korrigiert
    Montag, 15. April 2019 23:58

Alle Antworten

  • Ich vermute mal, der zweite Schnipsel soll ein Auszug aus Deiner Log-Datei sein, oder? In Deinem Code importierst Du die LogDatei als CSV-Datei mit 8 Header-Spalten. Wenn wir Dein Problem nachvollziehen können sollen, müsstest Du uns einen Auszug zukommen lassen, der so benutzbar ist, wie Du ihn benutzt - natürlich solltest Du sensible Daten entfernen oder unkenntlich machen, aber die "Struktur" bzw. "Funktion" der Datei muss dabei erhalten bleiben, um von uns als Beispiel benutzt werden zu können.

    Bei StackOverflow heißt das "How to create a Minimal, Complete, and Verifiable example" ... wäre aber hier auch hilfreich. ;-)


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''


    • Bearbeitet BOfH-666 Dienstag, 9. April 2019 08:14
    Dienstag, 9. April 2019 08:09
  • Hallo, nein der 2.Schnipsel ist die Ausgabe die ich bekomme...

    hier noch ein Auszug des input-files

    Apr  3 21:23:52		auth	notice	openvpn	user 'mario' authenticated
    Apr  3 22:05:37		auth	notice	openvpn	user 'xxx' authenticated
    Apr  3 22:06:00		daemon	notice	openvpn[22222]	mario/555.555.555.555:44444 [mario] Inactivity timeout (--ping-restart), restarting
    Apr  3 22:07:46		auth	notice	openvpn	user 'yyy' authenticated
    Apr  3 22:23:29		auth	notice	openvpn	user 'zzz' authenticated
    Apr  3 23:05:37		auth	notice	openvpn	user 'xxx' authenticated
    Apr  3 23:07:46		auth	notice	openvpn	user 'yyy' authenticated
    Apr  3 23:23:29		auth	notice	openvpn	user 'zzz' authenticated

    Dienstag, 9. April 2019 08:39
  • Bitte vielmals um Entschguldigung! falsch hochgeladen!

    Hier das richtige File:

    Apr  3 21:23:52	openvpn	user 'mario' authenticated
    Apr  3 22:05:37	openvpn	user 'xxx' authenticated
    Apr  3 22:06:00	openvpn[22222]	mario/555.555.555.555:44444 [mario] Inactivity timeout (--ping-restart), restarting
    Apr  3 22:07:46	openvpn	user 'yyy' authenticated
    Apr  3 22:23:29	openvpn	user 'zzz' authenticated
    Apr  3 23:05:37	openvpn	user 'xxx' authenticated
    Apr  3 23:07:46	openvpn	user 'yyy' authenticated
    Apr  3 23:23:29	openvpn	user 'zzz' authenticated
    
    

    Dienstag, 9. April 2019 09:26
  • Im Code gibst Du als Delimiter ein Leerzeichen an (" "). Deine Beispieldaten enthalten aber Leerzeichen und Tabstops gemixt. Vielleicht solltest Du versuchen, Deine input-Files vorher entsprechend aufzubereiten - sonst dürfte Import-CSV vermutlich durcheinanderkommen, oder?

    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Dienstag, 9. April 2019 09:36
  • das dürfte dann eher in Problem mit meinem kopieren sein... sollten definitiv nur " " sein. und wie gesagt soweit funktioniert ja auch alles. habe es mal mit ein paar hundert Zeilen getestet!

    Hier noch einmal!

    Apr  3 21:23:52 openvpn: user 'mario' authenticated
    Apr  3 22:05:37 openvpn: user 'xxx' authenticated
    Apr  3 22:06:00 openvpn[22222]: mario/555.555.555.555:44444 [mario] Inactivity timeout (--ping-restart), restarting
    Apr  3 22:07:46 openvpn: user 'yyy' authenticated
    Apr  3 22:23:29 openvpn: user 'zzz' authenticated
    Apr  3 23:05:37 openvpn: user 'xxx' authenticated
    Apr  3 23:07:46 openvpn: user 'yyy' authenticated
    Apr  3 23:23:29 openvpn: user 'zzz' authenticated
    Das einzige Problem welches ich noch habe, was mir aber im Moment noch egal ist, das " " vor dem Tag was ich zum testen jetzt mal mit einer Spalte Null gelöst habe bis ich einmal die Funktion des Scripts habe.
    Dienstag, 9. April 2019 10:25
  • Hmmm ... ich muss zu meiner Schande eingestehen, dass ich immernoch nicht verstanden habe, was Du aus den Daten wie extrahieren möchtest.

    Vielleicht kann man unabhängig davon die Aufbereitung der Daten trotzdem schon mal ein wenig "pimpen" ... ;-)

    @'
    Apr  3 21:23:52 openvpn: user 'mario' authenticated
    Apr  3 22:05:37 openvpn: user 'xxx' authenticated
    Apr  3 22:06:00 openvpn[22222]: mario/555.555.555.555:44444 [mario] Inactivity timeout (--ping-restart), restarting
    Apr  3 22:07:46 openvpn: user 'yyy' authenticated
    Apr  3 22:23:29 openvpn: user 'zzz' authenticated
    Apr  3 23:05:37 openvpn: user 'xxx' authenticated
    Apr  3 23:07:46 openvpn: user 'yyy' authenticated
    Apr  3 23:23:29 openvpn: user 'zzz' authenticated
    '@ | 
    ConvertFrom-Csv -Header Month, Null, Day, Time, Tag, M1, M2, M3 -Delimiter " " | 
    Select-Object -Property Tag,
    @{ Name = 'Month'; Expression = { $_.Month } },
    @{ Name = 'Day'; Expression = { $_.Day } },
    @{ Name = 'Time'; Expression = { $_.Time } },
    @{ Name = 'M1'; Expression = { $_.M1 } },
    @{ Name = 'M2'; Expression = { $($_.M2).trim("[]'") } },
    @{ Name = 'M3'; Expression = { $_.M3 } },
    @{ Name = 'DateTime'; Expression = { [DateTime]::ParseExact( $_.Day + ' ' + $_.Month + ' ' + $_.Time, 'd MMM HH:mm:ss', [Globalization.CultureInfo]::CreateSpecificCulture('en-US')) } } | 
    Sort-Object M2, DateTime -OutVariable Data 
    
    $Data |
    Format-Table -a
    Wenn ich die Daten bis hier hin richtig verstanden habe und die Spalte M2 die Anwendernamen enthält, solltest Du es so etwas einfacher haben, die Daten wie gewünscht zu analysieren.

    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    • Bearbeitet BOfH-666 Dienstag, 9. April 2019 23:37 Tippfehler korrigiert
    Dienstag, 9. April 2019 22:37
  • Hallo und guten Morgen!

    Vielen Dank, das hilft mir auch bereits weiter, hatte nur

    $_.M2.trim("[]'")

    verwendet... was nicht zu dem gewünschten Erfolg geführt hatte.

    Zu meinem eigentlichen Anliegen. Die ausgabe ist wunderbar, nur möchte ich, dass die doppelten Einträge:

    Apr  3 23:05:37 openvpn: user 'xxx' authenticated
    Apr  3 23:07:46 openvpn: user 'yyy' authenticated
    Apr  3 23:23:29 openvpn: user 'zzz' authenticated

    nicht ausgegeben werden, da mehrere Personen Tagelang angemeldet sind und dann eine Liste an Stündlichen Einträgen meine Ausgabe unübersichtlich macht. Lediglich der erste Eintrag soll da stehen und quasi aussagen, dass dieser User seit diesem Datum/Zeit angemeldet ist.

    Ich bin Dir für Deine Hilfe sehr dankbar!

    Mittwoch, 10. April 2019 04:36
  • Hmmmm .... also das mit dem "verständlich für jemand anderen erklären" üben wir bitte nochmal ... ;-) :-D  ... die sind nicht gleich ... die unterschieden sich im DateTime-Property. ;-)

    Es gibt - wie fast immer - wieder mehrere Wege ans Ziel - das hier wär einer ...

    @'
    Apr  3 21:23:52 openvpn: user 'mario' authenticated
    Apr  3 22:05:37 openvpn: user 'xxx' authenticated
    Apr  3 22:06:00 openvpn[22222]: mario/555.555.555.555:44444 [mario] Inactivity timeout (--ping-restart), restarting
    Apr  3 22:07:46 openvpn: user 'yyy' authenticated
    Apr  3 22:23:29 openvpn: user 'zzz' authenticated
    Apr  3 23:05:37 openvpn: user 'xxx' authenticated
    Apr  3 23:07:46 openvpn: user 'yyy' authenticated
    Apr  3 23:23:29 openvpn: user 'zzz' authenticated
    '@ | 
    ConvertFrom-Csv -Header Month, Null, Day, Time, Tag, M1, M2, M3 -Delimiter " " | 
    Select-Object -Property Tag,
    @{ Name = 'Month'; Expression = { $_.Month } },
    @{ Name = 'Day'; Expression = { $_.Day } },
    @{ Name = 'Time'; Expression = { $_.Time } },
    @{ Name = 'M1'; Expression = { $_.M1 } },
    @{ Name = 'M2'; Expression = { $($_.M2).trim("[]'") } },
    @{ Name = 'M3'; Expression = { $_.M3 } },
    @{ Name = 'DateTime'; Expression = { [DateTime]::ParseExact( $_.Day + ' ' + $_.Month + ' ' + $_.Time, 'd MMM HH:mm:ss', [Globalization.CultureInfo]::CreateSpecificCulture('en-US')) } } | 
    Sort-Object M2, DateTime -OutVariable Data 
    
    $FilteredData = foreach ($item in $Data) {
        if (Compare-Object -ReferenceObject $item -DifferenceObject $saved -Property M2, M3 ) { $item }
        $saved = $item
    } 
    
    $FilteredData | Format-Table -a 

    Du prüfst in der Schleife, ob der aktuelle Schleifen-Wert dem vorherigen in den beiden gewünschten Properties (M2 und M3) entspricht und gibst ihn nur dann aus, wenn er das nicht tut. Dann speicherst Du Dir den aktuellen Schleifenwert in einer Variablen für den nächsten Schleifendurchlauf.

    OK so?


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    • Bearbeitet BOfH-666 Mittwoch, 10. April 2019 05:40
    Mittwoch, 10. April 2019 05:36
  • Ja, tut mir leid im Erklären bin ich noch nicht so auf Zack...

    Der Ansatz ist gut, nur funktioniert dann scheinbar durch die Sortierung der "Berechnung"s-Teil des Skripts nicht mehr so wie er soll... Bekomme "Ende" und "Dauer" dann nicht mehr angegeben

    Mittwoch, 10. April 2019 07:58
  • Hmmm ... na dann musste Deinen Code wieder entsprechend anpassen ... ich könnt' ja vielleicht n' Tipp geben, wenn ich die Struktur der Log-Einträge mal verstanden hätte ... ;-)

    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Mittwoch, 10. April 2019 08:59
  • Das ist das zentrale Logfile des OpenVPN Servers. Dieses Importiere ich und versuche mir die Einträge die ich brauche herauszufiltern und weiterzuverarbeiten. Aber ich denke ich habe falsch angefangen und muss einmal schauen, dass ich in erster Linie die ganzen Einträge die ich nicht benötige rausfiltere. Ich denke sonst wird es zu kompliziert. Das ganze Logfile hier zu posten ist denke ich nicht die Richtige Idee und die Daten auch noch zu verschleiern dann auch nicht so toll...
    Mittwoch, 10. April 2019 14:44
  • Aber ich denke ich habe falsch angefangen ...

    Das kommt schon mal vor und gehört zu dem ganzen Prozess manchmal einfach mit dazu.

    ... die ganzen Einträge die ich nicht benötige rausfiltere.

    Ich dachte, das hätten wir grade erledigt ... ;-)

    Das ganze Logfile hier zu posten ist denke ich nicht die Richtige Idee und die Daten auch noch zu verschleiern dann auch nicht so toll...

    Na zwischen "das ganze Logfile" und den mikrigen 2 Zeilen pro User, die Du hier oben gezeigt hast, gibt's ja noch etwas dazwischen - ein "gesundes Mittelmaß" sozusagen ... ein paar repräsentative Logzeilen, in denen man die Struktur erkennen und für den Rest des Logfiles extrapolieren kann.
    Wie sieht ein Logeintrag aus, wenn die Verbindung aufgebaut wird, wie sieht ein Logeintrag aus, der ignoriert werden kann und wie sieht ein Logeintrag aus, wenn die Verbindung beendet wird? ... und vielleicht, ob noch weitere Fälle zu betrachten sind? ... so ungefähr.


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Mittwoch, 10. April 2019 22:39
  • Lieber Olaf, ich finde Deine Hilfsbereitschaft echt toll... ich versuche alles in einen Post zu packen sobald ich im Büro bin. 

    Vielen Dank nochmal!

    Donnerstag, 11. April 2019 05:38
  • Hallo, also hier ein etwas größerer Abschnitt des Log-Files:

    Apr  3 15:38:52 openvpn[33054]: hannes/88.88.88.88:62920 peer info: IV_VER=2.4.0
    Apr  3 15:38:52 openvpn[33054]: hannes/88.88.88.88:62920 peer info: IV_PLAT=win
    Apr  3 15:38:52 openvpn[33054]: hannes/88.88.88.88:62920 peer info: IV_PROTO=2
    Apr  3 15:38:52 openvpn[33054]: hannes/88.88.88.88:62920 peer info: IV_LZ4=1
    Apr  3 15:38:52 openvpn[33054]: hannes/88.88.88.88:62920 peer info: IV_LZ4v2=1
    Apr  3 15:38:52 openvpn[33054]: hannes/88.88.88.88:62920 peer info: IV_LZO=1
    Apr  3 15:38:52 openvpn[33054]: hannes/88.88.88.88:62920 peer info: IV_COMP_STUB=1
    Apr  3 15:38:52 openvpn[33054]: hannes/88.88.88.88:62920 peer info: IV_COMP_STUBv2=1
    Apr  3 15:38:52 openvpn[33054]: hannes/88.88.88.88:62920 peer info: IV_TCPNL=1
    Apr  3 15:38:52 openvpn[33054]: hannes/88.88.88.88:62920 peer info: IV_GUI_VER=OpenVPN_GUI_11
    Apr  3 15:38:52 openvpn[33054]: hannes/88.88.88.88:62920 PLUGIN_CALL: POST /usr/local/lib/openvpn/plugins/openvpn-plugin-auth-script.so/PLUGIN_AUTH_USER_PASS_VERIFY status=2
    Apr  3 15:38:52 openvpn[33054]: hannes/88.88.88.88:62920 TLS: Username/Password authentication deferred for username 'hannes' [CN SET]
    Apr  3 15:38:52 openvpn[33054]: hannes/88.88.88.88:62920 Outgoing Data Channel: Cipher 'AES-128-GCM' initialized with 128 bit key
    Apr  3 15:38:52 openvpn[33054]: hannes/88.88.88.88:62920 Incoming Data Channel: Cipher 'AES-128-GCM' initialized with 128 bit key
    Apr  3 15:38:52 openvpn[33054]: hannes/88.88.88.88:62920 Control Channel: TLSv1.2, cipher TLSv1/SSLv3 ECDHE-RSA-AES256-GCM-SHA384, 2048 bit RSA
    Apr  3 15:38:52 openvpn: user 'hannes' authenticated
    Apr  3 15:39:08 openvpn[33054]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock
    Apr  3 15:39:08 openvpn[33054]: MANAGEMENT: CMD 'status 2'
    Apr  3 15:39:08 openvpn[33054]: MANAGEMENT: CMD 'quit'
    Apr  3 15:39:08 openvpn[33054]: MANAGEMENT: Client disconnected
    Apr  3 15:40:09 openvpn[33054]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock
    Apr  3 15:40:10 openvpn[33054]: MANAGEMENT: CMD 'status 2'
    Apr  3 15:40:10 openvpn[33054]: MANAGEMENT: CMD 'quit'
    Apr  3 15:40:10 openvpn[33054]: MANAGEMENT: Client disconnected
    Apr  3 15:41:11 openvpn[33054]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock
    Apr  3 15:41:11 openvpn[33054]: MANAGEMENT: CMD 'status 2'
    Apr  3 15:41:11 openvpn[33054]: MANAGEMENT: CMD 'quit'
    Apr  3 15:41:11 openvpn[33054]: MANAGEMENT: Client disconnected
    Apr  3 15:42:13 openvpn[33054]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock
    Apr  3 15:42:13 openvpn[33054]: MANAGEMENT: CMD 'status 2'
    Apr  3 15:42:13 openvpn[33054]: MANAGEMENT: CMD 'quit'
    Apr  3 15:42:13 openvpn[33054]: MANAGEMENT: Client disconnected
    Apr  3 15:43:14 openvpn[33054]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock
    Apr  3 15:43:14 openvpn[33054]: MANAGEMENT: CMD 'status 2'
    Apr  3 15:43:15 openvpn[33054]: MANAGEMENT: CMD 'quit'
    .
    .
    .
    Apr  3 16:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 TLS: soft reset sec=0 bytes=147280475/-1 pkts=509444/0
    Apr  3 16:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 peer info: IV_VER=2.4.6
    Apr  3 16:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 peer info: IV_PLAT=win
    Apr  3 16:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 peer info: IV_PROTO=2
    Apr  3 16:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 peer info: IV_LZ4=1
    Apr  3 16:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 peer info: IV_LZ4v2=1
    Apr  3 16:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 peer info: IV_LZO=1
    Apr  3 16:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 peer info: IV_COMP_STUB=1
    Apr  3 16:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 peer info: IV_COMP_STUBv2=1
    Apr  3 16:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 peer info: IV_TCPNL=1
    Apr  3 16:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 peer info: IV_GUI_VER=OpenVPN_GUI_11
    Apr  3 16:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 PLUGIN_CALL: POST /usr/local/lib/openvpn/plugins/openvpn-plugin-auth-script.so/PLUGIN_AUTH_USER_PASS_VERIFY status=2
    Apr  3 16:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 TLS: Username/Password authentication deferred for username 'sebastian' [CN SET]
    Apr  3 16:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 Outgoing Data Channel: Cipher 'AES-128-GCM' initialized with 128 bit key
    Apr  3 16:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 Incoming Data Channel: Cipher 'AES-128-GCM' initialized with 128 bit key
    Apr  3 16:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 Control Channel: TLSv1.2, cipher TLSv1/SSLv3 ECDHE-RSA-AES256-GCM-SHA384, 2048 bit RSA
    Apr  3 16:07:46 openvpn: user 'sebastian' authenticated
    Apr  3 16:07:52 openvpn[33054]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock
    Apr  3 16:07:53 openvpn[33054]: MANAGEMENT: CMD 'status 2'
    Apr  3 16:07:53 openvpn[33054]: MANAGEMENT: CMD 'quit'
    Apr  3 16:07:53 openvpn[33054]: MANAGEMENT: Client disconnected
    Apr  3 16:08:54 openvpn[33054]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock
    Apr  3 16:08:54 openvpn[33054]: MANAGEMENT: CMD 'status 2'
    Apr  3 16:08:55 openvpn[33054]: MANAGEMENT: CMD 'quit'
    Apr  3 16:08:55 openvpn[33054]: MANAGEMENT: Client disconnected
    Apr  3 16:09:56 openvpn[33054]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock
    Apr  3 16:09:56 openvpn[33054]: MANAGEMENT: CMD 'status 2'
    Apr  3 16:09:56 openvpn[33054]: MANAGEMENT: CMD 'quit'
    Apr  3 16:09:56 openvpn[33054]: MANAGEMENT: Client disconnected
    Apr  3 16:10:57 openvpn[33054]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock
    Apr  3 16:10:58 openvpn[33054]: MANAGEMENT: CMD 'status 2'
    Apr  3 16:10:58 openvpn[33054]: MANAGEMENT: CMD 'quit'
    .
    .
    .
    Apr  3 16:38:52 openvpn[33054]: hannes/88.88.88.88:62920 TLS: soft reset sec=0 bytes=35709/-1 pkts=724/0
    Apr  3 16:39:39 openvpn[33054]: hannes/88.88.88.88:62920 [hannes] Inactivity timeout (--ping-restart), restarting
    Apr  3 16:39:39 openvpn[33054]: hannes/88.88.88.88:62920 SIGUSR1[soft,ping-restart] received, client-instance restarting
    Apr  3 16:39:43 openvpn[33054]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock
    Apr  3 16:39:43 openvpn[33054]: MANAGEMENT: CMD 'status 2'
    Apr  3 16:39:43 openvpn[33054]: MANAGEMENT: CMD 'quit'
    Apr  3 16:39:43 openvpn[33054]: MANAGEMENT: Client disconnected
    Apr  3 16:40:44 openvpn[33054]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock
    Apr  3 16:40:45 openvpn[33054]: MANAGEMENT: CMD 'status 2'
    Apr  3 16:40:45 openvpn[33054]: MANAGEMENT: CMD 'quit'
    Apr  3 16:40:45 openvpn[33054]: MANAGEMENT: Client disconnected
    Apr  3 16:41:46 openvpn[33054]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock
    Apr  3 16:41:46 openvpn[33054]: MANAGEMENT: CMD 'status 2'
    Apr  3 16:41:46 openvpn[33054]: MANAGEMENT: CMD 'quit'
    Apr  3 16:41:46 openvpn[33054]: MANAGEMENT: Client disconnected
    Apr  3 16:42:48 openvpn[33054]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock
    Apr  3 16:42:48 openvpn[33054]: MANAGEMENT: CMD 'status 2'
    Apr  3 16:42:48 openvpn[33054]: MANAGEMENT: CMD 'quit'
    Apr  3 16:42:48 openvpn[33054]: MANAGEMENT: Client disconnected
    Apr  3 16:43:49 openvpn[33054]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock
    Apr  3 16:43:49 openvpn[33054]: MANAGEMENT: CMD 'status 2'
    Apr  3 16:43:50 openvpn[33054]: MANAGEMENT: CMD 'quit'
    .
    .
    .
    Apr  3 17:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 TLS: soft reset sec=0 bytes=2477254/-1 pkts=10558/0
    Apr  3 17:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 peer info: IV_VER=2.4.6
    Apr  3 17:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 peer info: IV_PLAT=win
    Apr  3 17:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 peer info: IV_PROTO=2
    Apr  3 17:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 peer info: IV_LZ4=1
    Apr  3 17:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 peer info: IV_LZ4v2=1
    Apr  3 17:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 peer info: IV_LZO=1
    Apr  3 17:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 peer info: IV_COMP_STUB=1
    Apr  3 17:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 peer info: IV_COMP_STUBv2=1
    Apr  3 17:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 peer info: IV_TCPNL=1
    Apr  3 17:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 peer info: IV_GUI_VER=OpenVPN_GUI_11
    Apr  3 17:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 PLUGIN_CALL: POST /usr/local/lib/openvpn/plugins/openvpn-plugin-auth-script.so/PLUGIN_AUTH_USER_PASS_VERIFY status=2
    Apr  3 17:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 TLS: Username/Password authentication deferred for username 'sebastian' [CN SET]
    Apr  3 17:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 Outgoing Data Channel: Cipher 'AES-128-GCM' initialized with 128 bit key
    Apr  3 17:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 Incoming Data Channel: Cipher 'AES-128-GCM' initialized with 128 bit key
    Apr  3 17:07:46 openvpn[33054]: sebastian/77.77.77.77:1194 Control Channel: TLSv1.2, cipher TLSv1/SSLv3 ECDHE-RSA-AES256-GCM-SHA384, 2048 bit RSA
    Apr  3 17:07:46 openvpn: user 'sebastian' authenticated
    Apr  3 17:08:28 openvpn[33054]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock
    Apr  3 17:08:28 openvpn[33054]: MANAGEMENT: CMD 'status 2'
    Apr  3 17:08:29 openvpn[33054]: MANAGEMENT: CMD 'quit'
    Apr  3 17:08:29 openvpn[33054]: MANAGEMENT: Client disconnected
    Apr  3 17:09:30 openvpn[33054]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock
    Apr  3 17:09:30 openvpn[33054]: MANAGEMENT: CMD 'status 2'
    Apr  3 17:09:30 openvpn[33054]: MANAGEMENT: CMD 'quit'
    Apr  3 17:09:30 openvpn[33054]: MANAGEMENT: Client disconnected
    Apr  3 17:10:31 openvpn[33054]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock
    Apr  3 17:10:31 openvpn[33054]: MANAGEMENT: CMD 'status 2'
    Apr  3 17:10:32 openvpn[33054]: MANAGEMENT: CMD 'quit'
    .
    .
    .
    Apr  3 21:03:00 openvpn[33054]: 55.55.55.55:1194 peer info: IV_VER=2.4.6
    Apr  3 21:03:00 openvpn[33054]: 55.55.55.55:1194 peer info: IV_PLAT=mac
    Apr  3 21:03:00 openvpn[33054]: 55.55.55.55:1194 peer info: IV_PROTO=2
    Apr  3 21:03:00 openvpn[33054]: 55.55.55.55:1194 peer info: IV_NCP=2
    Apr  3 21:03:00 openvpn[33054]: 55.55.55.55:1194 peer info: IV_LZ4=1
    Apr  3 21:03:00 openvpn[33054]: 55.55.55.55:1194 peer info: IV_LZ4v2=1
    Apr  3 21:03:00 openvpn[33054]: 55.55.55.55:1194 peer info: IV_LZO=1
    Apr  3 21:03:00 openvpn[33054]: 55.55.55.55:1194 peer info: IV_COMP_STUB=1
    Apr  3 21:03:00 openvpn[33054]: 55.55.55.55:1194 peer info: IV_COMP_STUBv2=1
    Apr  3 21:03:00 openvpn[33054]: 55.55.55.55:1194 peer info: IV_TCPNL=1
    Apr  3 21:03:00 openvpn[33054]: 55.55.55.55:1194 peer info: IV_GUI_VER="net.tunnelblick.tunnelblick_5180_3.7.8__build_5180)"
    Apr  3 21:03:00 openvpn[33054]: 55.55.55.55:1194 PLUGIN_CALL: POST /usr/local/lib/openvpn/plugins/openvpn-plugin-auth-script.so/PLUGIN_AUTH_USER_PASS_VERIFY status=2
    Apr  3 21:03:00 openvpn[33054]: 55.55.55.55:1194 TLS: Username/Password authentication deferred for username 'philipp' [CN SET]
    Apr  3 21:03:00 openvpn[33054]: 55.55.55.55:1194 Control Channel: TLSv1.2, cipher TLSv1/SSLv3 ECDHE-RSA-AES256-GCM-SHA384, 2048 bit RSA
    Apr  3 21:03:00 openvpn[33054]: 55.55.55.55:1194 [philipp.schober] Peer Connection Initiated with [AF_INET]55.55.55.55:1194
    Apr  3 21:03:00 openvpn: user 'philipp' authenticated
    Apr  3 21:03:39 openvpn[33054]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock
    Apr  3 21:03:39 openvpn[33054]: MANAGEMENT: CMD 'status 2'
    Apr  3 21:03:40 openvpn[33054]: MANAGEMENT: CMD 'quit'
    Apr  3 21:03:40 openvpn[33054]: MANAGEMENT: Client disconnected
    Apr  3 21:04:41 openvpn[33054]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock
    Apr  3 21:04:41 openvpn[33054]: MANAGEMENT: CMD 'status 2'
    Apr  3 21:04:41 openvpn[33054]: MANAGEMENT: CMD 'quit'
    Apr  3 21:04:41 openvpn[33054]: MANAGEMENT: Client disconnected
    .
    .
    .
    Apr  3 21:41:30 openvpn[33054]: philipp/55.55.55.55:1194 SIGTERM[soft,remote-exit] received, client-instance exiting
    Apr  3 21:41:39 openvpn[33054]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock
    Apr  3 21:41:39 openvpn[33054]: MANAGEMENT: CMD 'status 2'
    Apr  3 21:41:39 openvpn[33054]: MANAGEMENT: CMD 'quit'
    Apr  3 21:41:39 openvpn[33054]: MANAGEMENT: Client disconnected
    Apr  3 21:42:40 openvpn[33054]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock
    Apr  3 21:42:40 openvpn[33054]: MANAGEMENT: CMD 'status 2'
    Apr  3 21:42:41 openvpn[33054]: MANAGEMENT: CMD 'quit'
    Apr  3 21:42:41 openvpn[33054]: MANAGEMENT: Client disconnected
    Apr  3 21:43:42 openvpn[33054]: MANAGEMENT: Client connected from /var/etc/openvpn/server1.sock
    Apr  3 21:43:42 openvpn[33054]: MANAGEMENT: CMD 'status 2'
    Apr  3 21:43:42 openvpn[33054]: MANAGEMENT: CMD 'quit'
    

    Die essentiellen Zeilen sind: 1. Der Benutzer ist angemeldet

    Apr  3 16:07:46 openvpn: user 'sebastian' authenticated

    2. Die Verbindung wurde abgebrochen

    Apr  3 16:39:39 openvpn[33054]: hannes/88.88.88.88:62920 [hannes] Inactivity timeout (--ping-restart), restarting


    3. Die Verbindung wurde vom Benutzer getrennt

    Apr  3 21:41:30 openvpn[33054]: philipp/55.55.55.55:1194 SIGTERM[soft,remote-exit] received, client-instance exiting


    Wobei die letzten beiden gleich behandelt werden. Was aber auch nicht so wichtig ist

    Donnerstag, 11. April 2019 08:25
  • So, hier mal hoffentlich alles was benötigt wird. Ausgabe sollte sein eine CSV mit

    Anfangszeit, Benutzer, Endzeit, Dauer

    und bei sebastian in diesem beispiel, wird nach einer h wieder authentisiert. diese meldung soll aber nicht erscheinen denn die sind bei Dauerpatienten egal da zählt nur der 1. Eintrag! Des Weiteren soll bei Dauerpatienten keine Endzeit und Dauer ausgegeben werden.


    Donnerstag, 11. April 2019 08:28
  • In 1. steht 'sebastian' in 2. steht 'hannes' und in 3. steht 'philipp' - gehören diese Einträge wirklich zusammen? Wenn ja, woran kann man das erkennen?

    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Donnerstag, 11. April 2019 10:18
  • Die gehören nicht zusammen... das sind nur Beispiele für die auszuwertenden Zeilen!
    Zusammen gehören:

    Apr  3 15:38:52 openvpn: user 'hannes' authenticated
    Apr  3 16:39:39 openvpn[33054]: hannes/88.88.88.88:62920 [hannes] Inactivity timeout (--ping-restart), restarting

    und

    Apr 3 16:07:46 openvpn: user 'sebastian' authenticated

    kein Ende - durchgehende Verbindung

    und

    Apr  3 21:03:00 openvpn: user 'philipp' authenticated
    Apr  3 21:41:30 openvpn[33054]: philipp/55.55.55.55:1194 SIGTERM[soft,remote-exit] received, client-instance exiting

    Donnerstag, 11. April 2019 13:11
  • Hallo,

    $object = @()
    Get-Content C:\Temp\OpenVPN.log | Select-String "authenticated|restarting|exiting" | ForEach-Object {
        $obj = $null
        $obj = "" | Select-Object Time,Action,User
        $obj.Time = $([RegEx]"(\w{3}).*(\d{2}:\d{2}:\d{2})").Match($_).Value
        IF ( $_.Matches.Value -eq "authenticated" ) {
            $obj.Action = "Log On"
            $obj.User = $([RegEx]"'.*'").Match($_).Value.Replace("'","")
        } elseIF ( $_.Matches.Value -eq "exiting" ) {
            $obj.Action = "Log Out"
            $obj.User = $([RegEx]": .*/").Match($_).Value.Replace(": ", "").Replace("/","")
        } elseIF ( $_.Matches.Value -eq "restarting" ) {
            $obj.Action = "Timeout"
            $obj.User = $([RegEx]": .*/").Match($_).Value.Replace(": ", "").Replace("/","")
        }   
        $object += $obj
    }
    $object

    Result:

    Hoffe das hilft dir weiter bzw. musst jetzt nur noch die Zeit zusammen Rechnen.

    lg


    • Bearbeitet Schlieng Donnerstag, 11. April 2019 13:54
    Donnerstag, 11. April 2019 13:52
  • ... ich hatte an was Ähnliches gedacht, aber das ist eigentlich besser als meine Idee ...  cool  ... :-)

    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Donnerstag, 11. April 2019 20:53
  • Hallo, das ist scheinbar auch ein guter Ansatz, aber da blicke ich mich nicht ganz durch wie ich weiter gehen soll...

    Mit dem jetzigen Script komme ich schon zu dieser Ausgabe, nur die Endzeit vom Philipp fehlt mr noch:

    Skript:

    $zeile=0
    $RawData = Import-Csv $LogFile -Header Month, Null, Day, Time, Tag, M1, M2, M3, M4, M5 -Delimiter " " | Select-Object -Property Tag,
            @{ Name = 'Month'; Expression = { $_.Month }},
            @{ Name = 'Day'; Expression = { $_.Day }},
            @{ Name = 'Time'; Expression = { $_.Time }},
            @{ Name = 'M1'; Expression = { $_.M1 }},
            @{ Name = 'M2'; Expression = { $($_.M2).Trim("[]'") }},
            @{ Name = 'M3'; Expression = { $_.M3 }},
            @{ Name = 'M5'; Expression = { $_.M5 }},
            @{ Name = 'DateTime'; Expression = { [DateTime]::ParseExact( $_.Day + ' ' + $_.Month + ' ' + $_.Time, 'd MMM HH:mm:ss', [Globalization.CultureInfo]::CreateSpecificCulture('en-US')) }} | Sort-Object M2, DateTime
    
            $Data = foreach ($item in $RawData) {
                if (Compare-Object -ReferenceObject $item -DifferenceObject $saved -Property M2, M3 )
                {
            $item
                #Write-Host $zeile
                #Write-Host "in Compare-object-schleife" -ForegroundColor Red
                }
                $saved = $item
                $zeile++
                }
    
    $Result = for ( $i=0; $i -lt $data.Count; $i++ ) {
              if ( $data[$i].M3 -eq "authenticated" ) {
              $found = $false
                $j = $i + 1
                do {
                    if ((($data[$i].M2 -eq $data[$j].M2) -and ($data[$j].M3 -eq "Inactivity")) -or (($data[$i].M2 -match ($Data[$j].M1)) -and ($data[$j].M5 -eq "exiting"))) { # -or (($data[$i].M2 -eq $($data[$j].M1).Split('/')[0])) -and ($data[$j].M5 -eq "exiting")) (($data[$j].M1 -like ($Data[$i].M2)) -and ($data[$j].M5 -eq "exiting")) {
                        $found = $true
                            [PSCustomObject]@{
                            Beginn = $data[$i].DateTime
                            Benutzer = $data[$i].M2
                            Ende = ($data[$j].DateTime)
                            Dauer = New-Timespan -Start ($data[$i].DateTime) -End ($data[$j].DateTime)
                            }
                    } else {
                      $j++
                    } 
                    } until ($found -or ($j -eq $data.Count -1))
                      if (-Not $found) { 
                            [PSCustomObject]@{
                            Beginn = $Data[$i].DateTime
                            Benutzer = $data[$i].M2
                            }
                    }
                }
              }
    
    ### Daten-Ausgabe ###
    $Result | Format-Table -a # | Sort-Object Beginn
    $Result | Export-Csv -path $OutputFile -encoding UTF8 -Delimiter ";" -NoTypeInformation

    Montag, 15. April 2019 09:58
  • Bitte keine Bilder von Code oder Beispieldaten oder Output posten ... sowas ist meistens schwer zu lesen und zeimlich nutzlos.

    $object = @()
    Get-Content D:\sample\openVPN.log | 
    Select-String "authenticated|restarting|exiting" | 
    ForEach-Object {
        $obj = $null
        $obj = "" | Select-Object Time, Action, User
        $Rslt = $([RegEx]"(\w{3})\s+(\d+)\s+(\d{2}:\d{2}:\d{2})").Match($_)
    $DateTimeString = "{0} {1:d2} {2}" -f $Rslt.Groups[1], [INT]$Rslt.Groups[2].Value, $Rslt.Groups[3]
    $obj.Time = [datetime]::parseexact($DateTimeString, 'MMM dd HH:mm:ss', $null)
    IF ( $_.Matches.Value -eq "authenticated" ) { $obj.Action = "Log On" $obj.User = $([RegEx]"'.*'").Match($_).Value.Replace("'", "") } elseIF ( $_.Matches.Value -eq "exiting" ) { $obj.Action = "Log Out" $obj.User = $([RegEx]": .*/").Match($_).Value.Replace(": ", "").Replace("/", "") } elseIF ( $_.Matches.Value -eq "restarting" ) { $obj.Action = "Timeout" $obj.User = $([RegEx]": .*/").Match($_).Value.Replace(": ", "").Replace("/", "") } $object += $obj } $saved = $null $data = $object | Select-Object -Unique -Property * | Sort-Object -Property User,Time | ForEach-Object{ If($_.Action -ne $saved.Action){$_} $saved = $_ } for ($i = 0; $i -lt $data.Count; $i++ ) { if ($data[$i].Action -eq 'Log On' -and $data[$i + 1].Action -match 'Timeout|Log Out' -and $data[$i].User -eq $data[$i + 1].User) { [PSCustomObject]@{ User = $data[$i].User Start = $data[$i].Time Ende = $data[$i + 1 ].Time Dauer = New-TimeSpan -Start $($data[$i].Time) -End $($data[$i + 1].Time) } continue } elseif ($data[$i].Action -eq 'Log On') { [PSCustomObject]@{ User = $data[$i].User Start = $data[$i].Time Ende = '-' Dauer = '-' } } }

    Nur mal aus Neugier ... was stellst Du mit den Daten an? Wozu ist das Ganze gut?


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''


    • Als Antwort markiert ContrOliva Dienstag, 16. April 2019 10:44
    • Bearbeitet BOfH-666 Donnerstag, 18. April 2019 07:35 Code erweitert/korrigiert
    Montag, 15. April 2019 23:58
    • Zum ersten, sorry wusste ich nicht, werde keine Bilder mit Code mehr posten...
    • Vielen Dank... Das Skript funktioniert genau so wie ich es möchte, muss die Ausgabe nur noch nach Datum/Zeit sortieren
    • Um Deine Neugier zu befriedigen, was ich mit den Daten anstelle, das sind meine ersten Geh-Versuche in PS. Ich setze mich erst seit kurzem damit auseinander und versuche es zu lernen. Habe noch so meine Probleme, vor allem in der logischen Umsetzung (Bin für jegliche Lern- oder Buch-Tips dankbar!
    Dienstag, 16. April 2019 10:43
    • Bin für jegliche Lern- oder Buch-Tips dankbar!

    In Deutsch sind die Sachen von Tobias Weltner oder Holger Schwichtenberg immer empfehlenswert. Auf English gelten die Sachen von Don Jones, Bruce Payette oder Lee Holmes als sehr gut.

    So lange es noch verfügbar ist, kannst Du Dir den kostenlosen Video-Kurs in der Microsoft Virtual Academy - Getting Started with Powershell anschauen ... dauert ca 8 - 10 Stunden ... 


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Dienstag, 16. April 2019 11:07
  • Nochmals vielen Dank, von Tobias Weltner habe ich bereits vergangene Woche ein Buch bestellt... Mal sehen wie es sonst noch weitergeht! Werde mir mal diesen Video-Kurs ansehen!
    Dienstag, 16. April 2019 11:14
  • Wenn die englische Sprache kein Problem für Dich ist, kannst Du Dir auch ein paar gute Videos auf Youtube angucken. Die Videoqualität ist manchmal weniger gut - aber es geht ja meistens um den Inhalt.  ... und taufrisch sind die natürlich auch nciht mehr, aber für einen Anfänger, wie ich glaube, immernoch gut geeignet.

    https://www.youtube.com/watch?v=KprrLkjPq_c&list=PLwQMKscHg7ajDqH4g6JqBkjZm-CKeQaCS

    https://www.youtube.com/watch?v=qVIPNsAkJxM

    ... und noch viele weitere  ... ;-)


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Dienstag, 16. April 2019 12:35
  • Vielen DANK für die wertvollen Tips... Ich werde das WE nutzen und beginnen mich intensiver zu Beschäftignen!

    Eines noch zu dem letzten Skript, das funktioniert einwandfrei nur den Tagen mit 2 Stellen d.h. ab dem 10. des Monats funktioniert es nicht mehr. Wenn ich dann im Skript von

    'MMM  d HH:mm:ss'

    auf

    'MMM dd HH:mm:ss'

    ändere funktioniert es, allerdings nicht umgekehrt, dann geht es mit zb. dem 9. nicht, da dann ein Leerzeichen davor steht. Hast Du eine Idee wie ich das auch noch lösen kann?

    VlD


    Donnerstag, 18. April 2019 05:32
  • ... hab's angepasst ... probier ma

    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Donnerstag, 18. April 2019 07:35
  • Alter Schwede, na da muss ich aber noch viel lernen... Jetzt hab ich grad mal verstanden was das Skript macht, dann noch das ;-) Du bist ein Wahnsinn! - DANKE Funktioniert, super.
    Donnerstag, 18. April 2019 09:27
  • Hi, ich schon wieder... seit 1.Mai, funktioniert das Script wieder nicht. Hab eine Ahnung warum... aber keine Lösung :-(

    Bekomme die folgende Meldung:

    Ausnahme beim Aufrufen von "ParseExact" mit 3 Argument(en):  "Die Zeichenfolge wurde nicht als gültiges DateTime erkannt."
    In C:\Users\ol.bei\Desktop\Log_VPN02.ps1:10 Zeichen:5
    +     $obj.Time = [datetime]::parseexact($DateTimeString, 'MMM dd HH:mm ...
    +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
        + FullyQualifiedErrorId : FormatException

    Die Ausgabe von $DateTimeString scheint aber richtig zu sein...

    PS C:\Users\ol.bei> $DateTimeString
    May 01 23:30:09
    
    PS C:\Users\ol.bei>
    Oder verstehe ich das etwas falsch?


    Einzige Änderung: in der 1. IF-Zeile im ForEach-Objekt vergleiche ich mit dm aktuellen Datum um nur die heutigen Einträge auszugeben und ich vermute da liegt der Fehler, da hier wieder die 0 fehlt.

    IF (( $_.Matches.Value -eq "authenticated" ) -and ($obj.Time).Date -eq $((Get-Date).Date)) {


    Mittwoch, 8. Mai 2019 12:24
  • Dir fällt aber auch immer wieder was Neues ein ....  Du hättest ruhig erwähnen dürfen, dass es sich bei den Datumswerten um ein englishes/amerikanisches Format handelt ....  ;-)  :-O :-D

    Ersetz mal bitte bei der ParseExact - Methode die $Null durch [CultureInfo]("en-US")


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Mittwoch, 8. Mai 2019 13:39