Re: Unix-Basics: Login-Shell eines Benutzers ermitteln?

Autor: Frank Thommen <lists.uugrn_at_drosera.ch>
Datum: Mon, 16 Sep 2013 11:43:01 +0200
Hallo,

On 15.09.13 10:16, Thomas Stiefel wrote:
> Hallo,
>
> Am 15.09.2013 02:08, schrieb Raphael Eiselstein:
>> Hallo zusammen,
>>
>> Unter Linux und FreeBSD funktioniert folgender "Hack":
>>
>> -----------------------------
>> $ getent passwd john | cut -f 7 -d ":"
>> -----------------------------
>>
>> Auf welchen unixoiden Betriebssystemen würde obiges fehlschlagen, zB
>> weil es "cut" nicht gibt oder mit einer anderen Syntax?
> Ich habe noch kein UNIX oder Linux gesehen, auf dem es kein cut gab.
> Noch nicht mal unter Solaris (^^) oder in einer eingeschränkten
> chroot-Umgebung!
>
>> * Wie allgemeingültig ist die Verwendung von "getent passwd"?

Kann ich nicht definitiv sagen, aber es gab das auch schon mit Solaris 2.4


>> * Wie allgemeingültig ist das Format, welches "getent passwd" liefert?
>>    (Trennzeichen und Anzahl/Position der Spalten)

Habe noch nie ein anderes Format gesehen.


> Wie allgemeingültig es ist kann ich dir nicht sagen, aber es scheint ja
> nur den jeweiligen Eintrag der /etc/passwd auszugeben. Die Ausgabe ist
> die selbe wie bei "grep john /etc/passwd".

Nicht ganz.  `getent` gibt Dir den Eintrag des jeweiligen Benutzers auf 
dem aktuellen System, egal von welcher DB er kommt (/etc/passwd, NIS, 
NIS+, LDAP).

Z.B. mit /etc/nisswitch
    passwd:     compat

und /etc/passwd
    +meinuser

gibt `getent passwd meinuser` den NIS (oder NIS+)-Eintrag dieses Benutzers.


>> Gibt es einen *generischen* Weg?
>>
> Wie wäre es mit awk (ist eigentlich auch immer installiert):
>
> --------------------------------
> $ awk -F: '$1~/john/ {print $NF;}' /etc/passwd
> --------------------------------

Warum mit Kanonen (awk) auf Spatzen schiessen?

Wenn Du nur bash (oder ksh :-) verwenden willst, geht auch etwas in der Art:

    U=`getent passwd <BENUTZERNAME>`;echo ${U##*:}


frank

-- 
UUGRN e.V. http://www.uugrn.org/
http://mailman.uugrn.org/mailman/listinfo/uugrn
Wiki: https://wiki.uugrn.org/UUGRN:Mailingliste
Archiv: http://lists.uugrn.org/
Empfangen am 16.09.2013

Dieses Archiv wurde generiert von hypermail 2.2.0 : 16.09.2013 CEST