Я хотел бы перечислить информацию обо всех пользователях, использующих drush
.
Есть user-information
, но показывает информацию только об одном пользователе.
Есть ли другие решения?
Недавно появился проект песочницы: Drush User List (от John ), который должен работать для Drupal 6 и 7 (см. GitHub ).
Применение:
drush user-list
Для другого обходного пути может помочь следующая команда с синтаксисом подстановки процесса:
drush uinf $(drush sqlq "SELECT GROUP_CONCAT(name) FROM users")
Однако в некоторых случаях это может привести к сбою (когда в имени пользователя есть специальные символы).
Как указал kenorb, есть обходной путь через SQL-запрос.
И с небольшим изменением он становится более устойчивым к специальным символам в именах - используя вместо имени пользователя «uid» (целое число):
drush uinf $(drush sqlq "SELECT GROUP_CONCAT(uid) FROM users")
PS: подтверждено только для Drupal 7.
PPS: Извините за добавление еще одного ответа, я пока не могу комментировать.
Для 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
Для Drupal 8 на Packagist есть команда Drush 9 , например
drush users:list
Список всех пользователей Drupal в виде таблицы. Смотрите
drush users:list --help
параметры фильтрации.
Извините ... написал этот скрипт для удаленных машин 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"