ich bin gerade dabei ein Kernel Modul zu programmieren bzw. ich versuche es .
Ein simples Hello World Modul hab ich erfolgreich zum laufen bekommen. Mit dem einladen (insmod) und ausladen (rmmod) hatte ich keinerlei Probleme
So erst mal zu meinem Vorhaben, ich möchte dass wenn sich ein Benutzer anmeldet (Login erfolgreich war) der Name und die Zeit in eine Logdatei geschrieben / gespeichert werden.
Jetzt stellt sich einfach die Frage, wie stellt man das am besten an . Um die Frage auseinander zu nehmen sieht man das es 3 "Teilschritte" sind.
1. Schritt -> Abfangen das sich ein User angemeldet hat (über das Terminal)
Der für mich schwierigste Teil ist dieser hier, da ich zur Zeit absolut keine Ahnung habe, wie ich ein Benutzer nach erfolgreichen Login abfangen kann.
Zwei Ideen hab ich aktuell, wo es aber bei der Umsetzung hapert (falls überhaupt eine von den Ideen umsetzbar ist ^^ ).
Meine erste Idee war es, ob es möglich ist, das "login" Kommando abzufangen.
Und meine 2 Idee war es, eventuell zu überprüfen das ein neuer Prozess nicht vom "root" ist, sondern von einem Benutzer! Sprich dann muss sich ja jemand angemeldet haben. (falls es möglich ist z.B. über die Prozesstabelle dies zu überprüfen).
2. Schritt -> Die Zeit abfangen
Dies hab ich durch mehrere fehlgeschlagenen Versuche dann, doch endlich hinbekommen, aber vielleicht könnte man dies mit Schritt 1. kombinieren oder andere Vorschläge sind sehr gerne gesehen. Realisiert hab ich dies über die Real Time Clock Funktion (siehe Code)
Code: Alles auswählen
/*Nur der Time Ausschnitt*/
#include<asm/rtc.h>
struct rtc_time aktuelle_zeit;
get_rtc_time(&aktuelle_zeit);
printk("Es ist %d:%d:%d Uhr \n", aktuelle_zeit.tm.hour + 2, aktuelle_zeit.tm.min, aktuelle_zeit.tm.sec); // + 2 da UTC Time
Dieser Schritt wäre natürlich erst mal der letzte auf der Liste. Da ich dies gerne in einer externen *.txt speichern möchte, würde ich wohl auf die fopen() Funktion zurück greifen. Da ich gelesen habe das diese auch bei der Kernel Programmierung funktionieren soll.
Dann bedanke ich mich schon mal für das Lesen meines Anliegens ^^ und hoffe das der ein oder andere eine Idee hat wie man gerade Schritt 1 realisierbar machen kann.
Des Weiteren hoffe ich das mein Anliegen sowie meine Darstellung des Problems gut erfasst habe.
Zum Schluss natürlich noch System Informationen:
Distribution: Debian 6.0.7
Kernel 2.6.32-5-686