Список всех пользователей и групп

Первое, что пришло на ум можно устранить лямбду:

reduce(list.__add__, map(list, [mi.image_set.all() for mi in list_of_menuitems]))

Или даже устраняют карту, так как Вы уже получили аккомпанемент списка:

reduce(list.__add__, [list(mi.image_set.all()) for mi in list_of_menuitems])

можно также просто выразить это как сумму списков:

sum([list(mi.image_set.all()) for mi in list_of_menuitems], [])
53
задан Community 23 May 2017 в 00:31
поделиться

5 ответов

Почти наверняка вам понадобится dscl. Кратчайший способ сделать это уже указывался:

$ dscl . list /users
$ dscl . list /groups

Если вы хотите вывести информацию о каждом пользователе, используйте readall :

$ dscl . readall /users
$ dscl . readall /groups

И если вам нужно программно проанализировать указанную информацию, используйте - plist, чтобы упростить вашу жизнь:

$ dscl -plist . readall /users
$ dscl -plist . readall /groups
99
ответ дан 7 November 2019 в 08:30
поделиться

Подход Open Directory (от: http://rickcogley.blogspot.com/2008/11/listing-open-directory-users-on-os-x.html ]):

dscacheutil -q user
dscacheutil -q group

Возьмите каждую строку из соответствующего вывода, которая начинается с «name:», уберите «name:», и у вас есть свой список. Если у вас нет dscacheutil, вы можете использовать ручные команды:

root# dscl localhost list /Local/Default/Users
root# dscl localhost list /LDAPv3/127.0.0.1/Users

Старый школьный подход до Open Directory .... (вздох): Для списка пользователей:

  • Возьмите файл / etc / passwd из системы.
  • Разделите его по строкам
  • Разделите каждую строку на основе ":"
  • Возьмите первый символ для каждой строки

Список групп:

  • Возьмите файл / etc / group из системы.
  • Разделите его по строкам
  • Разделите каждую строку на основе ":"
  • Возьмите первый символ для каждой line
12
ответ дан 7 November 2019 в 08:30
поделиться

Команды без искажения / без временного файла:

# dscl . list /users
# dscl . list /groups
8
ответ дан 7 November 2019 в 08:30
поделиться

посмотрите, например, dsexport .

Вот несколько примеров:

dsexport /tmp/export.out /Local/Default dsRecTypeStandard:Groups

dsexport /tmp/export.out /Local/Default dsRecTypeStandard:Users

выходные данные немного мусор, но что-то вроде sed может их очистить для вас.

1
ответ дан 7 November 2019 в 08:30
поделиться

Вернемся к старому В наши дни мы бы сделали это тривиально с помощью NetInfo Kit, но сегодня нет удобного способа сделать это с помощью Objective-C. Вам придется покопаться в API OpenDirectory.

1
ответ дан 7 November 2019 в 08:30
поделиться