O “outro” dedo (campos GECOS em / etc / passwd)

5

no arquivo /etc/passwd , temos o chamado GECOS fields (que significa "General Electric Comprehensive Operating System"), ou seja:

username:password:userid:groupid:gecos:home-dir:shell 

Em que GECOS é dividido como:

:FullName,RoomAddress,WorkPhone,HomePhone,Others:

E Others estão divididos em quantas vírgulas você quiser:

:FullName,RoomAddress,WorkPhone,HomePhone,Other1,Other2,Other3:

Nas páginas man chfn , pode-se ler:

The other field is used to store accounting information used by other applications.

Agora, para um desenvolvedor de aplicativos (estou interessado em C language , system calls e / ou bash script ) qual é a melhor maneira de obter essas informações?

E considerando apenas o ambiente Bash , dado que o comando finger não pode exibir os campos others (ou pelo menos eu não vejo como), quais são os outros comandos que podem? Eu sei que chfn não apenas mostra, mas permite que eles sejam alterados. E se você quiser apenas enviar para stdout ?

    
por Dr Beco 26.01.2016 / 17:34

2 respostas

2

A melhor maneira que encontrei é usar getent porque isso funcionará com LDAP / NIS ou outros métodos de usuários não locais

getent passwd $UID| awk -F ":" '{print $5}'
    
por 31.10.2017 / 16:43
1

Por exemplo, em um script bash você pode imprimir o quinto campo do arquivo /etc/passwd com awk / gawk:

awk -F ":" '{print $5}' /etc/passwd

A opção -F fs usa o fs para o separador de campo de entrada (nesse caso, : ).
Você pode ler mais, por exemplo, na página inicial do GNU awk [ 1 ] .
O awk tem a função split() para dividir uma string (onde neste caso você usará o 5º campo como string e o , como separador). Tome a insipiração de alguma outra resposta sobre isso [ 2 ] ... .

    
por 26.01.2016 / 17:54