Prüfen, ob Benutzer mit der ID xxx angemeldet ist

Lord Kefir

Lord Kefir

König
Also, ich arbeite zur Zeit an einem Programm zur Systemüberwachung, bei welchem man für jeden Benutzer der überwacht werden soll, ein Benutzerprofil anlegen kann. Zur Zeit können z.B. die laufenden Prozesse für den Benutzer mit der ID 1000 protokolliert werden. Dabei werden einfach alle Prozesse unter /proc ausgewertet.
Nun habe ich mir gedacht, dass es aus Performancegründen sinnvoll wäre, die Prozesse die einem Benutzer zuzuordnen sind nur einzulesen, wenn dieser auch wirklich eingeloggt ist. Hat jemand 'ne Ahnung, wie ich das ermitteln kann?

Mfg, Lord Kefir
 
hm, mit regexp. könntest du das wahrscheinlich irgendwie bewerkstelligen.

Nen Bashscript das zuerst mit "users" alle aktuell eingelogten User und dann über "id <name>" die uid ermittelt, vielleicht?

Ist wahrscheinlich viel zu umständlich, aber obs dafür bereits irgendwelche Sachen gibt (libs in c oder der gleichen) weiss ich leider nicht.

Havoc][
 
Ich kannte users noch garnicht. Habe immer who benutzt. So bekommt man eine Liste der UIDs der angemeldeten Benutzer:
Code:
users | while read theUser ; do grep "^$theUser:" /etc/passwd | cut -d: -f3 ; done
 
In C gibts da Funktionen, ich weiß nicht ob es das ist was du suchst.
Ich hab mal was zusammengefrickelt :)
Code:
#include <stdlib.h>
#include <stdio.h>

int main()
{
  int user_id = getlogin(); /* Die ID des USERS besorgen */
  char* logged_in = cuserid(user_id); /* Den Usernamen */
  printf("%s are/is currently logged in", logged_in);

  return 0;
}
 
Danke für den Tipp. Bei meinem kleineren Projekt geht es mir allerdings darum, das Betriebssystem näher kennenzulernen, weswegen ich keine anderen Programme benutzen etc. wollte. Hm, irgendwo muss die entsprechende Information doch zu finden sein...

Mfg, Lord Kefir
 
ogbgroup schrieb:
In C gibts da Funktionen, ich weiß nicht ob es das ist was du suchst.
Ich hab mal was zusammengefrickelt :)
Code:
#include <stdlib.h>
#include <stdio.h>

int main()
{
  int user_id = getlogin(); /* Die ID des USERS besorgen */
  char* logged_in = cuserid(user_id); /* Den Usernamen */
  printf("%s are/is currently logged in", logged_in);

  return 0;
}

Hm, schaue ich mir mal an. Wie gesagt, ein Vorsatz war es, auf keine Libs oder Programme zurückzugreifen... wenn's Standard-C ist, ist es aber schon okay :) Dankesehr!

Mfg, Lord Kefir

[edit]
Langsam drehe ich ja durch - da zieht man sich so'n 1000-Seiten Wälzer über C-Programmierung unter Linux rein und solch ein rudimentäres Zeugs findet man darin nicht :(
[/edit]
 
Zuletzt bearbeitet:
Lord Kefir schrieb:
Hm, schaue ich mir mal an. Wie gesagt, ein Vorsatz war es, auf keine Libs oder Programme zurückzugreifen... wenn's Standard-C ist, ist es aber schon okay :) Dankesehr!

Mfg, Lord Kefir
Kein Problem, reinstes Standard C 8)
 
Zurück
Oben