Как я могу удалить всех заблокированных пользователей с Drush?

Как я могу удалить всех заблокированных пользователей с Drush? У меня сотни заблокированных пользователей от спамеров. Я хочу удалить всех этих пользователей. Я попытался сделать это через веб-интерфейс, но это работает только около 20 пользователей одновременно. У меня есть 60 страниц для удаления, что занимает слишком много времени и является неустойчивым. Кроме того, я хочу, чтобы все соответствующие обратные вызовы выполнялись при удалении заблокированного пользователя, и я хочу, чтобы все его содержимое было удалено. Я заметил user-cancel, но, похоже, это относится только к одному пользователю. Есть ли способ заставить эту команду работать со всеми заблокированными пользователями?

3 ответа

Используя Drupal 7 и Drush 5.9, я сделал так:

1- Создайте псевдоним "@example-local" для вашей локальной установки Drupal, как показано здесь.

2. Создайте файл сценария с именем "delete-заблокированный-user.script", например, в "/Users/username/scripts/drush", со следующим кодом:

#!/usr/bin/env drush

$users = db_query("SELECT * FROM {users} WHERE (status = 0)");
foreach ($users as $user) {
  exec("drush @example-local user-cancel $user->name -y");
}

3. Сделайте исполняемый файл скрипта с:

chmod +x ~/scripts/drush/delete-blocked-users.script 

4- И, наконец, запустите скрипт, используя:

drush @example-local scr ~/scripts/drush/delete-blocked-users.script 

Это удалит всех заблокированных пользователей (пользователей со статусом = 0), без запроса подтверждения (определяется флагом -y).

Drush не имеет простой команды для удаления всех заблокированных учетных записей. Вероятно, было бы проще настроить представление vbo в вашем интерфейсе администратора, которое позволяет фильтровать заблокированных пользователей, затем вы можете выбрать все и отменить.

Вы также можете запустить скрипт PHP с drush php-script script.php,

Таким образом, вы можете настроить php-скрипт, который выполняет запрос для заблокированных пользователей, затем перебирает пользователей и вызывает функцию отмены пользователя.

Помимо drush, проще получить доступ к данным mysql, используя имя пользователя, пароль и имя базы данных, которые вы можете найти в файле drupalhomedir/sites/default/setting.php с помощью команды:

mysql -u username-at-setting -ppassword-at-setting database-at-setting

затем удалите все записи в пользовательской таблице drupal с помощью:

DELETE FROM user WHERE status=0;
Другие вопросы по тегам