Wie bekomme ich den echten Benutzernamen des angemeldeten Benutzers in Unix?

8

Ich suche nach dem echten Benutzernamen des eingeloggten Benutzers (vollständiger Name), um zu vermeiden, dass ich ihn in einer App, die ich gerade erstelle, darauf hinweisen müssen. Ich sehe, dass der Befehl finger eine columned Liste von Daten ausgibt, die dies beinhaltet, und sich gefragt hat, ob es sinnvoll ist, das zu durchforsten oder gibt es einen einfacheren Weg? Keiner der Schalter für Finger, die ich gefunden habe, gibt nur den richtigen Namen aus. Irgendwelche Gedanken würden sehr geschätzt werden.

    
braitsch 08.07.2011, 02:16
quelle

6 Antworten

10
%Vor%

( getent ist normalerweise besser als grepping /etc/passwd ).

    
Todd Owen 07.01.2014 05:16
quelle
3

Sie können getpwent () verwenden, um alle aufeinander folgenden Passworteinträge zu erhalten, bis Sie diejenige finden, die der aktuellen entspricht angemeldeter Benutzer, dann analysieren Sie das Feld gecos .

Besser können Sie getpwuid () verwenden, um direkt den Eintrag für die Benutzer-ID des aktuellen Benutzers abzurufen.

In beiden Fällen

  1. Sie müssen zuerst den Anmeldenamen oder die ID des aktuellen Benutzers und
  2. abrufen
  3. Es gibt keine Garantie, dass das gecos-Feld tatsächlich den echten vollständigen Namen des Benutzers oder irgendetwas enthält.
Stephen P 12.07.2011 18:48
quelle
2
%Vor%

Hiermit wird zuerst die Zeile des aktuellen Benutzers aus der passwd -Datenbank abgerufen (die möglicherweise auch in NIS oder LDAP gespeichert ist)

In der abgerufenen Zeile werden die Felder durch : delimiters getrennt. Der Eintrag GECOS ist das fünfte Feld, also extrahiert das erste cut das.

Der GECOS -Eintrag selbst besteht möglicherweise aus mehreren Elementen - getrennt durch , - dessen vollständiger Name das erste Element ist. Das ist es, was der zweite cut extrahiert. Dies funktioniert auch, wenn im Eintrag GECOS die Kommas fehlen. In diesem Fall ist der gesamte Eintrag der erste Eintrag.

Sie können das Ergebnis auch einer Variablen zuweisen:

%Vor%

Oder weiter direkt:

%Vor% %Vor%     
blubberdiblub 07.02.2016 01:28
quelle
0

Speziell für macOS gibt es keinen Befehl getent ; Stattdessen müssen Sie id -f

verwenden     
fluffy 25.09.2016 20:31
quelle
-1

Ich benutze

%Vor%

Erklärungen:

  • $ USER enthält das Login des aktuellen Benutzers
  • Der erste Teil ( grep ) extrahiert aus /etc/passwd die Zeile über diesen Benutzer
  • Der zweite Teil ( awk ) teilt diese Zeile mit dem Trennzeichen ':' und druckt die fünfte Komponente, Das ist der vollständige Name

Wenn Sie sich nicht darauf verlassen wollen, dass $USER gesetzt ist, können Sie stattdessen Folgendes verwenden:

%Vor%     
Pierre-Antoine 26.09.2012 12:34
quelle
-2

Wie wäre es mit whoami oder logname

?     
Reef 12.07.2011 18:40
quelle

Tags und Links