LINUX.ORG.RU

Bash - имена,идентификаторы,оболочки пользователей


0

1

Добрый день.Подскажите,пожалуйста,при помощи какой команды можно получить имена,идентификаторы,оболочки и домашние каталоги пользователей.В поисках натыкался на команты sed и awk,но так и не понял,что из них реально применить для получения нужно мне информации. (Полное задание:получить имена,идентификаторы,оболочки и домашние каталоги пользователей,чьи домашние каталоги,заданые в файле,не существуют).Заранее благодарю.

Ответ на: комментарий от kernelpanic

А что там нужно посмотреть?Просто в задании как раз файл /etc/passwd используется(в нем поиск домашних каталогов нужно произвести)

Sly_Denis111
() автор топика
Ответ на: комментарий от Sly_Denis111

А посмотреть результат их работы слабó? Не надо было лекции прогуливать.

Home находится в шестом поле:

┌┤~├──────────────────────────────────────────────────────────┤gotf@persephone├─
└─> getent passwd | awk -F':' '/gotf/ {print $6}'
/home/gotf
GotF ★★★★★
()
Ответ на: комментарий от GotF

Благодарю. P.S:Если бы эти лекции были содержательными и по теме,а не 20 минут о Линуксе и час рассказов о жизни,то таких вопросов и не возникало бы :)

Sly_Denis111
() автор топика
Ответ на: комментарий от kernelpanic

Хех,лабораторная работа сама по себе наааааааааамного объемнее.А вопрос,заданый мною выше,единственный,с чем я не смог разобраться.Остальное выполнено :) В любом случае,спасибо :)

Sly_Denis111
() автор топика
Ответ на: комментарий от kernelpanic

Хм.Спасибо за ссылку,познавательно,буду изучать!

Sly_Denis111
() автор топика
Ответ на: комментарий от true_admin

Я предпочитаю bash. Но приглашение действительно позаимствовано с zsh. Особого удобства нет, просто привык к нему.

GotF ★★★★★
()
Ответ на: комментарий от GotF

getent passwd | awk -F':' '/gotf/ {print $6}'

Это не самый лучший вариант, так как в определённой ситуации может вернуть 2 и более строк:

[c0der@rock ~]$ getent passwd | awk -F: '/coder/{print $6}
/home/coder
/dev/null
/dev/null

Предлагаю так:

[c0der@rock ~]$ getent passwd | awk -F: '$1=="coder"{print $6}'
/home/coder

Т.е. искать логин только в первом поле, и использовать сравнение, вместо регулярного выражения.

php-coder ★★★★★
()
Ответ на: комментарий от php-coder

Можно ещё проще:

[c0der@rock ~]$ getent passwd coder | cut -d: -f6
/home/coder

Т.е. getent-у можно вторым аргументом сразу указать имя пользователя.

php-coder ★★★★★
()
Ответ на: комментарий от php-coder
getent passwd | awk -F: '$1=="coder"{print $6}' 

---выведем список home'oв пользователей,чье имя==coder?Так? Если да,то это я понял,а вот как вывести информацию о пользователе, чьего home'а в /etc/passwd не существует? На сколько я понял,у локальных пользователей как раз home в /etc/passwd/ существует,а у доменных - нет.Верно?Если да,то нужно вывести список только доменных пользователей.Можно ли это сделать с помощью wbinfo -u и не парить себе мозг с указаными выше вариантами реализации?

Sly_Denis111
() автор топика
Ответ на: комментарий от Sly_Denis111
getent passwd | awk -F: {print $1" "$3" "$6" "$7}'

Так я смогу получить имена,идентификаторы,оболочки и домашние каталоги всех пользователей.Правильно?(Поправте,если ошибаюсь) А как теперь проверить,существует ли домашний каталог пользователя,указанный в файле(/ect/passwd/),и вывести информацию только о тех пользователях,у которых он не существует?Что-то типа if [ !-e $6 ]?Совсем запутался я.

Sly_Denis111
() автор топика
Ответ на: комментарий от php-coder

>> использовать сравнение, вместо регулярного выражения.

Вот об этом я постоянно забываю =)

GotF ★★★★★
()
Ответ на: комментарий от Sly_Denis111

Может,кому пригодится:

OIFS=$IFS; IFS=:
while read name passwd uid gid gecos home shell
do 
 if [ ! -e $home ] 
    then echo $name"---"$uid"---"$home"---"$shell 
 fi
done<$filename
IFS=$OIFS

Sly_Denis111
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.