s4
changeset 967:27eacef6470b
Initial entry of account removing script
author | HIROSE Yuuji <yuuji@gentei.org> |
---|---|
date | Sun, 20 Feb 2022 17:11:34 +0900 |
parents | 679f621de4b5 |
children | edd96c59c8a2 |
files | scripts/remove-user-csv.sh |
diffstat | 1 files changed, 63 insertions(+), 0 deletions(-) [+] |
line diff
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/scripts/remove-user-csv.sh Sun Feb 20 17:11:34 2022 +0900 1.3 @@ -0,0 +1,63 @@ 1.4 +#!/bin/sh 1.5 + 1.6 +if [ -z "$1" ]; then 1.7 + cat<<-EOF >&2 1.8 + Usage: ./remove-user-csv.sh CSVfile 1.9 + Csv file should be the form of: 1.10 + username(email) 1.11 + EOF 1.12 + exit 1 1.13 +fi 1.14 +outdelim() echo "------------------------------------------------" 1.15 + 1.16 + 1.17 +target=$(cd `dirname "$1"`; pwd)/`basename $1` 1.18 + 1.19 +cd `dirname $0`/.. 1.20 +if ! . ./s4-funcs.sh; then 1.21 + echo "Cannot find s4-funcs.sh, which should be located in $mydir/.." 1.22 + exit 1 1.23 +fi 1.24 + 1.25 +outdelim 1.26 +query<<-EOF 1.27 + CREATE TEMPORARY TABLE _rmuser(user); 1.28 + .import $target _rmuser 1.29 + .mode list 1.30 + .head 1 1.31 + SELECT name, 1.32 + max(CASE key WHEN 'gecos' THEN val END) gecos, 1.33 + max(CASE key WHEN 'login' THEN val END) login 1.34 + FROM user_s 1.35 + WHERE name IN (SELECT * FROM _rmuser) 1.36 + GROUP by name; 1.37 + SELECT count(name) || ' users' "To be removed" 1.38 + FROM user WHERE name IN (SELECT * FROM _rmuser); 1.39 + EOF 1.40 + 1.41 +outdelim 1.42 +echo "Remove them? (Type C-c to abort)" >&2 1.43 +read ans 1.44 + 1.45 +# Remove users in Base World 1.46 +query "DELETE FROM user WHERE name IN (SELECT * FROM _rmuser);" 1.47 + 1.48 +# Remove users in Extra World 1.49 +for world in $S4WORLDLIST; do 1.50 + case "$world" in # tag:shortname:desc 1.51 + *:*:*:*) continue ;; 1.52 + *:*:*) 1.53 + t_s=${world%:*} # tag:shortname 1.54 + d=${world##*:} # desc 1.55 + w=${t_s#*:} # shortname 1.56 + ;; 1.57 + *) continue ;; 1.58 + esac 1.59 + wdb=`(unset DB; . ./s4-config-$w.sh; echo $DB)` 1.60 + echo "Operate on world $d($wdb)" >&2 1.61 + query <<-EOF 1.62 + ATTACH DATABASE "$wdb" AS w; 1.63 + DELETE FROM w.user WHERE name IN (SELECT * FROM _rmuser); 1.64 + DETACH DATABASE w; 1.65 + EOF 1.66 +done