¿Cómo puedo obtener el nombre completo del usuario que está conectado actualmente a través de Terminal cuando se ejecuta como root?

3

Este comando funciona muy bien para enumerar el nombre completo:

finger $(whoami) | egrep -o 'Name: [a-zA-Z0-9 ]{1,}' | cut -d ':' -f 2 | xargs echo

Pero, si lo ejecutas después de un

sudo su

Devuelve el administrador del sistema raíz CVMS

Me pregunto si hay quizás otro lugar para leer la variable de Nombre completo. ¿Hay algún objeto de usuario en algún lugar que pueda enumerar esto? Pensé que estaba en algo con

dscacheutil -q user | grep -A 3 -B 2 -e uid:\ 5'[0-9][0-9]'

Pero no parece que el nombre completo esté representado en los datos de retorno.

    
pregunta iMatthewCM 16.01.2017 - 19:04

3 respuestas

1

Necesitaba un enfoque de dos líneas:

username="$(stat -f%Su /dev/console)"
realname="$(dscl . -read /Users/$username RealName | cut -d: -f2 | sed -e 's/^[ \t]*//' | grep -v "^$")"

Y luego puedes repetir la variable de nombre real.

    
respondido por el iMatthewCM 17.01.2017 - 01:17
2

Puede usar dscl para leer el Nombre real:

$ dscl . -read /Users/grgarside RealName
RealName:
 George Garside

Lo siguiente te dará justo lo que buscas. Esto usa 'quién soy yo' para obtener el nombre de usuario, luego sed para formatear la salida.

$ dscl . -read "/Users/$(who am i | awk '{print $1}')" RealName | sed -n 's/^ //g;2p'
George Garside
    
respondido por el grg 16.01.2017 - 19:31
2

Simplemente usa id -P $(stat -f%Su /dev/console) | awk -F '[:]' '{print $8}'

id -P $(stat -f%Su /dev/console) rendimientos:

adminuser:********:501:20::0:0:AdminUser:/Users/adminuser:/bin/bash

awk -F '[:]' '{print $8}' produce el octavo término (el "Nombre real") de una salida separada por dos puntos.

Según lo propuesto por fd0 puede usar alternativamente:

id -P $(stat -f%Su /dev/console) | cut -d : -f 8

que es aún más simple / elegante.

    
respondido por el klanomath 17.01.2017 - 15:48

Lea otras preguntas en las etiquetas