Как я могу удалить всех заблокированных пользователей с 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;