L'altro dito (campi GECOS su / etc / passwd)


6

nel file /etc/passwdabbiamo il cosiddetto GECOS fields(che sta per "Sistema operativo completo elettrico generale"), cioè:

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

Dove GECOSsono divisi come:

:FullName,RoomAddress,WorkPhone,HomePhone,Others:

E Otherssono divisi in tutte le virgole che vuoi:

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

Nelle man chfnpagine si può leggere:

L'altro campo viene utilizzato per memorizzare le informazioni contabili utilizzate da altre applicazioni.

Ora, per uno sviluppatore di applicazioni (mi interessa C language, system callse / o bash script), che è il modo migliore per afferrare queste informazioni?

E considerando solo l' Bashambiente, dato che il fingercomando non può visualizzare i otherscampi (o almeno non vedo come), quali sono gli altri comandi che possono? So che chfnnon solo mostrano, ma permettono loro di essere cambiati. Che cosa succede se si deve semplicemente emetterlo stdout?


Ad esempio in bash è possibile estrarre il campo con awk -F ":" '{print $5}' /etc/passwd... quindi è possibile elaborare nuovamente la stringa (è possibile eseguire anche una sola chiamata tramite splitil campo con la funzione split.
Hastur

Mi chiedevo se potevo usare un comando specifico per il lavoro, invece di comandi di elaborazione testi ( awk, sed, cat, grep, cut, e simili). Inoltre, come le applicazioni potrebbero leggere questo? Qualche esempio di un'applicazione che utilizza il othercampo?
Dr Beco,

Risposte:


2

Il modo migliore che ho trovato è usare getentperché funzionerà con LDAP / NIS o altri metodi di utenti non locali

getent passwd $UID| awk -F ":" '{print $5}'

1

Ad esempio in uno script bash è possibile stampare il quinto campo del file /etc/passwdcon awk / gawk:

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

L'opzione -F fsutilizza fs per il separatore del campo di input (in questo caso :).
Puoi leggere di più, ad esempio, sulla homepage di GNU awk [ 1 ] .
Awk ha la funzione split()di dividere una stringa (dove in questo caso userete il 5 ° campo come stringa e il ,come separatore). Prendere insipiration da qualche altra risposta su di esso [ 2 ] ... .


Questo comando darebbe l'intero GECOScampo. Ma è un punto di partenza per una risposta.
Dr Beco,

Questo "è appena uscita allo stdout" . Da qui, usando la punta della split ()funzione puoi iniziare a scrivere la tua sceneggiatura ...
Hastur,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.