Benutzerliste

explorer

Well-Known Member
Ist vielleicht ne Noobyfrage, aber ich hab auch nach langem googeln nix gefunden.
Ich suche den Konsolenbefehl um mir alle registrierten Benutzer des Systems anzeigen zu lassen.
Plz help.

mfg explorer
 
cat /etc/passwd sollte dir alle Accounts liefern. Manuell eingetragene Benutzer evtl. Anhand der uid ausfiltern (>=1000 wenn ich mich nicht irre)

Gruß, Jobi
 
Gibs auch noch ne andere Methode?
Wo man einfach den Befehl eingibt und bekommt ne einfache Liste?!
Deine Methode wollte ich eigentlich gerade nicht benutzen...
Hätte ja sein können das es da auch noch ne Methode gibt, bei der man nicht extra was wegschneiden muss.

Danxe trotzdem.

mfg
explorer
 
Ok, hab wohl irgendwie die Nachhilfe in regex verpennt *gg*
Hat sich erledigt.

Für die Nachwelt:
Code:
sed s/:.*//g /etc/passwd

mfg explorer
 
Falls du ein paar Zeilen C programmieren kannst, könntest du dir getpwent(3) ansehen. Damit kommt man auch an Benutzer, die nicht in der lokalen Paßwortdatenbank eingetragen sind. Gut, vielleicht brauchst du das nicht, aber für die Nachwelt... :)
 
Bin nicht sooo der super Programmierer aber ich habe mein Ziel damit erreicht:
Code:
#include <pwd.h>
#include <sys/types.h>
#include <iostream.h>
#include <string>

using namespace std;
struct passwd *pw;
struct userdata
{
	string name,passwd,gecos,dir,shell;
	uid_t uid;
	gid_t gid;
	time_t change,expire;
};

void getusers(userdata *users,int *lange)
{
	int i=0;
	while ((pw=getpwent()))
	{
		users[i].name=pw->pw_name;
		users[i].passwd=pw->pw_passwd;
		users[i].uid=pw->pw_uid;
		users[i].gid=pw->pw_gid;
		users[i].change=pw->pw_change;
		users[i].gecos=pw->pw_gecos;
		users[i].dir=pw->pw_dir;
		users[i].shell=pw->pw_shell;
		users[i].expire=pw->pw_expire;
		i++;
	}
	*lange=i;
}

int main(int argc, char* argv[])
{
	userdata users[999];
	int lange=0;
	getusers(users,&lange);//Einlesen der Benutzernamen in das Array users.
	for(int i=0;i<lange;i++)
	{
		cout<<"Name: "<<users[i].name<<"\n";
		cout<<"Passwort: "<<users[i].passwd<<"\n";
		cout<<"UID: "<<users[i].uid<<"\n";
		cout<<"GID: "<<users[i].gid<<"\n";
		cout<<"Letzte Passwortänderung: "<<users[i].change<<"\n";
		cout<<"Details: "<<users[i].gecos<<"\n";
		cout<<"Hormedir: "<<users[i].dir<<"\n";
		cout<<"Shell: "<<users[i].shell<<"\n";
		cout<<"Ablaufzeit: "<<users[i].expire<<"\n";
		cout<<"------------"<<"\n";
	}
	return 0;
}

Verbesserungsvorschläge nehme ich immer gerne entgegen.

mfg
explorer
 
Das kann man IMO auch einfacher haben:
Code:
#include <pwd.h>
#include <stdio.h>

int main(int argc, char* argv[])
{
 struct passwd* user;

 while ((user = getpwent()) != NULL)
   printf("%s\n", user->pw_name);  /* Andere Infos nach Bedarf hinzufügen */

 exit(0);
}
Man muß ja nicht gleich mit C++ auf Spatzen schießen. :)
 
Ging mir dabei auch eigentlich noch um die Funktion, da ich die Nutzerliste so einfacher und mehrmals einlesen kann.

mfg
explorer
 
Zurück
Oben