Shell-Skript, um eine Liste definierter Benutzer unter Linux zu erhalten?

7

Ich füge das zusammen, aber es ist scheiße: (z. B. magische Zahlen drin, Textanalyse ... boo!)

%Vor%

Was ist der richtige Weg, dies zu tun?

    
Robottinosino 19.05.2013, 10:21
quelle

6 Antworten

12

Einige Unix-Systeme verwenden nicht /etc/passwd oder Benutzer, die dort nicht angegeben sind. Sie sollten getent passwd anstelle von /etc/passwd verwenden.

Mein System hat auch Benutzer, die deaktiviert sind und sich nicht mehr einloggen können, wenn ihr Login-Befehl auf /bin/false oder /usr/sbin/nologin gesetzt ist. Sie möchten sie wahrscheinlich auch ausschließen.

Hier ist, was für mich funktioniert, einschließlich arheops awk Befehl und ansgar's Code, um das Minimum und Maximum von login.defs zu erhalten:

%Vor%     
Stephen Ostermiller 19.05.2013 10:47
quelle
2

Ich bin unsicher, warum Sie nur & gt; 1000, auf Redhat-System beginnt es von 500.

Für mich funktioniert dieses awk-Skript ok:

%Vor%

Verwendet nur mit Passwörtern:

%Vor%     
arheops 19.05.2013 10:31
quelle
2

Extrahieren Sie die minimalen und maximalen Benutzer-IDs aus /etc/login.defs und wählen Sie dann die Benutzer mit IDs zwischen diesen Rändern aus /etc/passwd :

aus %Vor%     
Ansgar Wiechers 19.05.2013 10:44
quelle
2

Hier ist ein weiterer Ansatz, der nur ein externes Programm, getent (vorgeschlagen von @AnsgarWiechers) hervorbringt, so dass sowohl lokale als auch vernetzte passwd-Datenbanken verwendet werden. Dieser reduziert die Anzahl der Gabeln auf nur eine für getent selbst. Seine Portabilität ist jedoch etwas eingeschränkt, da es bash4 erfordert.

%Vor%     
Alex North-Keys 20.05.2013 03:09
quelle
1

Sie versuchen also nur, eine Liste aller Benutzer von / etc / passwd zu erhalten? Wenn dem so ist, glaube ich, dass dies eine einfachere Lösung wäre:

%Vor%

Bearbeiten:

Wenn Sie nur eine Liste von benutzerdefinierten Benutzern (nicht die Systembenutzer) haben möchten, können Sie eine der folgenden verwenden:

%Vor%

^ Dies setzt voraus, dass Ihr System 1000 und mehr für UID und GID für benutzerdefinierte Benutzer verwendet

%Vor%

^ Dies setzt voraus, dass jeder benutzerdefinierte Benutzer ein Home-Verzeichnis hat.

Andere Lösungen hängen von ausführlicheren Kriterien und Ihren Systemeinstellungen ab.

    
mart1n 19.05.2013 10:24
quelle
1

Hier ist eine Vereinfachung von @ StephenOstermillers Antwort, die es mit nur zwei Prozessen erledigt. Ich denke, es ist auch einfacher zu lesen (vorausgesetzt, Sie sind vertraut mit der awk NR==FNR idiom).

%Vor%

Die verschiedenen Split-Muster in den beiden Eingängen sind ein bisschen Warzen; vielleicht könntest du das irgendwie eleganter beheben.

    
tripleee 21.05.2013 12:45
quelle

Tags und Links