«Другой» палец (поля GECOS в / etc / passwd)

4440
Dr Beco

в файле /etc/passwdу нас есть так называемое GECOS fields(что означает «Комплексная операционная система General Electric»), то есть:

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

Где GECOSделятся как:

:FullName,RoomAddress,WorkPhone,HomePhone,Others: 

И Othersделятся на столько запятых, сколько захотите:

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

На man chfnстраницах можно прочитать:

Другое поле используется для хранения учетной информации, используемой другими приложениями.

Теперь, для разработчиков приложений (я заинтересован в C language, system callsи / или bash script), который является лучшим способом, чтобы захватить эту информацию?

И учитывая только Bashсреду, учитывая, что эта fingerкоманда не может отображать othersполя (или, по крайней мере, я не вижу, как), какие другие команды могут? Я знаю, что chfnне только показываю, но и позволяю их менять. Что если нужно просто вывести его на stdout?

5
Например, в bash вы можете извлечь поле с помощью `awk -F": "'' / etc / passwd` ... затем вы можете снова обработать строку (вы можете сделать это с помощью одного вызова также через` split `Ting поле с функцией разделения. Hastur 8 лет назад 0
Мне было интересно, смогу ли я использовать команду, специфичную для задания, вместо команд обработки текста (`awk`,` sed`, `cat`,` grep`, `cut` и т. Д.). Кроме того, как приложения будут читать это? Какой-нибудь пример приложения, которое использует поле `other`? Dr Beco 8 лет назад 0
Спасибо за издание, исправляющее опечатку. Dr Beco 6 лет назад 0

2 ответа на вопрос

2
Tim Hughes

Лучший способ, который я нашел, это использовать, getentпотому что он будет работать с LDAP / NIS или другими методами не локальных пользователей.

getent passwd $UID| awk -F ":" '' 
1
Hastur

Например, в скрипте bash вы можете напечатать пятое поле файла /etc/passwdс помощью awk / gawk:

awk -F ":" '' /etc/passwd 

Опция -F fsиспользует fs для разделителя поля ввода (в данном случае :).
Вы можете прочитать больше, например, на домашней странице GNU awk [ 1 ] .
В Awk есть функция split()разделения строки (где в этом случае вы будете использовать 5-е поле в качестве строки и ,разделитель в качестве). Возьмите insipiration от какого - то другого ответа о нем [ 2 ] ... .

Эта команда выдаст все поле `GECOS`. Но это отправная точка для ответа. Dr Beco 8 лет назад 0
Это _ "просто вывод на стандартный вывод" _. Отсюда, используя подсказку функции `split ()`, вы можете начать писать свой скрипт ... Hastur 8 лет назад 0

Похожие вопросы