получение имен пользователей в системе в bash

#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. Большое спасибо всем, кто ответил на мой вопрос