Как перечислить всех пользователей в drush?

12

Я хотел бы перечислить информацию обо всех пользователях, использующих drush.

Есть user-information, но показывает информацию только об одном пользователе.

Есть ли другие решения?

kenorb
источник

Ответы:

7

Недавно появился проект песочницы: Drush User List (от John ), который должен работать для Drupal 6 и 7 (см. GitHub ).

Применение:

drush user-list

Для другого обходного пути может помочь следующая команда с синтаксисом подстановки процесса:

drush uinf $(drush sqlq "SELECT GROUP_CONCAT(name) FROM users")

Однако в некоторых случаях это может привести к сбою (когда в имени пользователя есть специальные символы).

kenorb
источник
6

Как указал kenorb, есть обходной путь через SQL-запрос.

И с небольшим изменением он становится более устойчивым к специальным символам в именах - используя вместо имени пользователя «uid» (целое число):

drush uinf $(drush sqlq "SELECT GROUP_CONCAT(uid) FROM users")

PS: подтверждено только для Drupal 7.
PPS: Извините за добавление еще одного ответа, я пока не могу комментировать.

Эль Ханнес
источник
5

Для Drupal 8 вы можете запустить следующую команду:

drush uinf $(drush sqlq "SELECT GROUP_CONCAT(name) FROM users_field_data")

Вывод будет выглядеть примерно так:

 User ID       :  1
 User name     :  admin
 User mail     :  info@example.com
 User roles    :  authenticated
                  administrator
 User status   :  1
DrupalFever
источник
0

Извините ... написал этот скрипт для удаленных машин Drupal 8 с псевдонимами; при необходимости легко адаптируется к местному

if [ $# -lt 1 ]
then
        echo "Usage : $0 sitealias [all/disabled/enabled] [rolename]"
        echo "Note: this only runs on Drupal 8 schema"
        exit
 fi

 ARG1=$1
 ARG2=${2:-all}
 ARG3=${3:-nothing}

 if [ "$ARG3" != "nothing" ]
 then
    ROLEWHERE='AND user__roles.roles_target_id="'$ARG3'"'
 fi



 case "$ARG2" in
    enabled) 
        WHERECLAUSE='WHERE users_field_data.status="1" '$ROLEWHERE
        ;;
    disabled)
        WHERECLAUSE='WHERE users_field_data.status="0" '$ROLEWHERE
        ;;
    all)
        WHERECLAUSE='WHERE users_field_data.status LIKE "%" '$ROLEWHERE
        ;;
    *)
        WHERECLAUSE=''
        ;;
 esac

 QUERY='SELECT users_field_data.uid,users_field_data.name,users_field_data.mail,from_unixtime(users_field_data.login) AS "lastlogin",user__roles.roles_target_id,users_field_data.status FROM users_field_data LEFT JOIN user__roles ON users_field_data.uid = user__roles.entity_id '$WHERECLAUSE

 drush $1 sqlq "$QUERY"
Шон
источник