Benutzer Loginzeiten erfassen

Allgemein Fragen, deutsche News, Ankündigungen & Events zum OTRS
Post Reply
Pattot
Znuny newbie
Posts: 45
Joined: 10 Jun 2008, 15:46

Benutzer Loginzeiten erfassen

Post by Pattot »

Hallo,
ich würde gerne die Loginzeiten der Benutzer erfassen. ( Benutzer x hat sich am um angemeldet und um yy Uhr abgemeldet.)
Gibt es hierzu für OTRS schon fertige Lösungen?

Bei meinem selbst programmierten Versuch erfahre ich zwar wann die Benutzer sich angemeldet haben, da die Sessions aber in der Datenbank anscheinend Verschlüsselt sind (md5?)
Kann ich nicht herausfinden welche beendete Session zu welchem Benutzer gehört.
Hierzu gehe ich an das OTRS Logfile unter var/log.

Anmeldung laut Logfile
[Wed Sep 21 16:20:23 2011][Notice][Kernel::System::Auth::LDAP::Auth] User:userx authentication ok .
Abmeldung laut Logfile
[Wed Sep 21 16:20:26 2011][Notice][Kernel::System::AuthSession::DB::RemoveSessionID] Removed SessionID 10f506cc7a2fa3f0e86bf59a7e481cf658.

Und hier das Perl Skript, welches zumindest schon mal die (jeweils "heutigen") Anmeldungen erfasst.
Die Systeminformationen in der Signatur sind noch aktuell.

Code: Select all

use strict;
my $username;
my $time;
my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat,$Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time); 

my @Monatsname = ("undef","Jan","Feb","Mar","Ap","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");

open (in,"<Pfad zur Logdatei") || die $!;
  while (<in>)
  {
    if ($_=~ /\[\w+ $Monatsname[($Monat+1)] ($Monatstag \d+:\d+:\d+ \d+)\]/)
    {
      if ($_=~ /(\w+\S?\w+?) \(.*\) authentication ok/)
      {
        $_ =~ /\[\w+ [a-zA-Z]+ (\d+ \d+:\d+:\d+ \d+)\]/;
        $time = $1;
        $_ =~ /(\w+\S?\w+?) \(.*\) authentication ok/;
        $username = $1;
        print $username." ".$time."\n";
      }
    }
  }
close in;

Grüße
2024
System: Debian
Datenbank: Maria DB
Otrs Version: Znuny 7.0.9
Apache: 2



Früher war alles besser :)
System: Windows 2003 Server 64bit
Datenbank: Mssql 2005
Otrs Version: 2.4.7
Apache: 2
Alexander Halle
Znuny expert
Posts: 296
Joined: 04 Jul 2010, 17:49
Znuny Version: 3.1.x
Real Name: Alexander Halle
Company: radprax MVZ GmbH
Location: Wuppertal
Contact:

Re: Benutzer Loginzeiten erfassen

Post by Alexander Halle »

Hm, gute Frage. Wahrscheinlich ist das eher eine Frage für das Developer-Subforum. Ich vermute, dass es für die Umwandlung dieser ID einen API-Befehl gibt oder es über die Datenbank auslesbar ist.

Denkbar ist in dem Zug auch ein Patchen der entsprechenden Code-Stelle, damit der Username direkt im Log ausgegeben wird beim Logout. Fände ich auch generell eine sinnvolle Erweiterung.

Rein mit Log-Files kannst du es auf Umwegen lösen. Die Session-ID wird im Webserver-Log beim Login und beim Logout als Parameter der URL gespeichert. Und über das OTRS-Log hast du für den Login einen Usernamen mit identischen Timestamps wie im Webserver-Log. Aus der Kombination beider Logs kannst du somit dem Usernamen eine Session-ID zuordnen. Umständlich, aber machbar.

Allerdings schließe ich nicht aus, dass es irgendwo einen Config-Parameter gibt oder jemand schon Mal die Lösung veröffentlicht hat.
Alexander Halle System: OTRS 3.1.x, Ubuntu 10.04.x LTS, MySQL 5.1.x, Apache 2.2.x
OTRS Community Links: User Meetings, Projects
Pattot
Znuny newbie
Posts: 45
Joined: 10 Jun 2008, 15:46

Re: Benutzer Loginzeiten erfassen

Post by Pattot »

Danke Alexander!
An das Logfile vom webserver hatte ich garnicht gedacht.
Der Timestamp passt zwar nicht 100% (+-ein paar Sekunden) aber die ip des Clients steht ja auch jeweils mit drin.
2024
System: Debian
Datenbank: Maria DB
Otrs Version: Znuny 7.0.9
Apache: 2



Früher war alles besser :)
System: Windows 2003 Server 64bit
Datenbank: Mssql 2005
Otrs Version: 2.4.7
Apache: 2
Alexander Halle
Znuny expert
Posts: 296
Joined: 04 Jul 2010, 17:49
Znuny Version: 3.1.x
Real Name: Alexander Halle
Company: radprax MVZ GmbH
Location: Wuppertal
Contact:

Re: Benutzer Loginzeiten erfassen

Post by Alexander Halle »

Pattot wrote:Der Timestamp passt zwar nicht 100% (+-ein paar Sekunden) aber die ip des Clients steht ja auch jeweils mit drin.
Merkwürdig, bei mir stimmte es auf die Sekunde. OTRS und Webserver laufen ja auf dem selben Server, benutzen also die selben Timestamps und eine Verzögerung durch den OTRS-Code war nicht erkennbar. Ich bin nur ein Mal durch die Test-Logins durcheinander gekommen und hatte dadurch 2 Sekunden Unterschied, da war ich aber wie gesagt in der falschen Zeile.

Wenn du später (weiteren) Code für die Community veröffentlichen willst, dann einfach hier posten oder schreib mich an, falls es auf OtterHub erscheinen soll (Blog-Artikel oder Projekt-Seite). Bitte Lizenz angeben (z.B. GPL).
Alexander Halle System: OTRS 3.1.x, Ubuntu 10.04.x LTS, MySQL 5.1.x, Apache 2.2.x
OTRS Community Links: User Meetings, Projects
Pattot
Znuny newbie
Posts: 45
Joined: 10 Jun 2008, 15:46

Re: Benutzer Loginzeiten erfassen

Post by Pattot »

Der Timestamp Unterschied ist aus meiner Sicht kein größeres Problem.
Aktuell bin ich soweit, IP(aus apache accesslog, Benuter (aus otrslog), Timestamp(aus apache accesslog) und Session (aus apache accesslog) aus zugeben.
Jetzt fehlt nur noch das Erfassen der Removed Sessions und deren Zuordnung. (was ja recht simpel ist)
Das fertige CGI Skript stelle ich natürlich gerne zur Verfügung und über die Aufnahme des Skripts im Otterhub würde ich mich natürlich freuen, auch wenn mein Programmierstiel vermutlich nicht der beste ist.
Mit Lizensierung habe ich mich bisher nicht befasst. (ich bin eigentlich Systemintegrator)
2024
System: Debian
Datenbank: Maria DB
Otrs Version: Znuny 7.0.9
Apache: 2



Früher war alles besser :)
System: Windows 2003 Server 64bit
Datenbank: Mssql 2005
Otrs Version: 2.4.7
Apache: 2
Post Reply