mart-e

La vie, Linux, la tartiflette...

Supprimer des utilisateurs indésirables sur GNU Social

Je me suis créé une instance GNU Social (nouveau nom de StatusNet) il y a quelques mois. A l’époque, j’avais oublié de verrouiller l’inscription. Évidement, les spammeurs trouvèrent vite mon instance et je me retrouve avec plus de 160 comptes indésirables.

Delete user

La façon simple de supprimer un compte est de se rendre dans la liste des utilisateurs (/directory/users), ouvrir un à un le profil de l’utilisateur et de le supprimer.

Si vous voulez un peu automatiser la chose, c’est possible avec ces deux commandes:

$ echo "select nickname from user where nickname != 'mart'" | mysql -u monuser -p madb > /tmp/toban.txt $ for user in (cat toban.txt) php scripts/deleteuser.php -n$user -y end

Ceci vous listera et supprimera tous les utilisateurs ne s’appelant pas ‘mart’. Dans le cas où vous possédez des comptes réels, il faudra sans doute faire une requête plus complexe pour par exemple n’obtenir que les personnes ayant poster 0 ou 1 message, etc.

Le -y étant pour ne pas demander de confirmation avant la suppression. Au passage si vous avez un utilisateur légitime s’appelant ‘nickname’, il serait également intéressant de supprimer la première ligne du fichier ;-)

[Spammeurs découvrant une formulaire d'inscription sans demande d'email](http://www.flickr.com/photos/library_of_congress/2163131283/) Spammeurs découvrant une formulaire d’inscription sans demande d’email

Notez que la boucle for est la syntaxe Fish. L’équivalent bash devrait ressembler à:

for user in (toban.txt) do php scripts/deleteuser.php -n\${user} -y done