#linux #bash #passwd
Вопрос:
Я новичок в написании сценариев в bash и хотел бы получить все имена пользователей системы Linux вместе с их домашними каталогами. Каждое имя пользователя должно быть в одной строке. Это лучший способ сделать это? или есть какой-нибудь лучший способ?
#! /bin/bash
# list all users accounts using the /etc/passwd file
cat /etc/passwd | awk -F: '{print $1," ",$6}'
Я прошу вас любезно дать совет
Комментарии:
1. Тебе не нужна трубка.
awk
можно прочитать непосредственно из файла:awk -F: '...' /etc/passwd
.2. Вы можете отфильтровать записи «nologin», если вам нужны только реальные пользователи.
3. активные пользователи (т. е. допустимая оболочка):
awk -F: 'FNR==NR { sh[$1] ; next } $7 in sh { print $1,$6 }' /etc/shells <(getent passwd)
4. спасибо большое за вашу помощь
Ответ №1:
Как прокомментировал @chepner, awk -F: ‘{печать $1,» «,$6}’ /etc/passwd лучше.
Вы можете попробовать следующее :
wget https://raw.githubusercontent.com/mbareck7/python_journey/main/nakerah/milestone00.py
cp /etc/passwd milestone_00.txt
python3 milestone00.py
Это скрипт на python, который принимает в качестве файла ввода /etc/пароля и возвращает список JSON, как показано ниже.
[
{
"user_name": "root",
"user_id": "0",
"home_dir": "/root",
"login_shell": "/bin/bash",
"normal_user": false
},
{
"user_name": "daemon",
"user_id": "1",
"home_dir": "/usr/sbin",
"login_shell": "/usr/sbin/nologin",
"normal_user": false
},......
.........
]
Комментарии:
1. Большое спасибо всем, кто ответил на мой вопрос