s4

view scripts/remove-user-csv.sh @ 967:27eacef6470b

Initial entry of account removing script
author HIROSE Yuuji <yuuji@gentei.org>
date Sun, 20 Feb 2022 17:11:34 +0900
parents scripts/add-user-csv.sh@7c78ebd2f39f
children
line source
1 #!/bin/sh
3 if [ -z "$1" ]; then
4 cat<<-EOF >&2
5 Usage: ./remove-user-csv.sh CSVfile
6 Csv file should be the form of:
7 username(email)
8 EOF
9 exit 1
10 fi
11 outdelim() echo "------------------------------------------------"
14 target=$(cd `dirname "$1"`; pwd)/`basename $1`
16 cd `dirname $0`/..
17 if ! . ./s4-funcs.sh; then
18 echo "Cannot find s4-funcs.sh, which should be located in $mydir/.."
19 exit 1
20 fi
22 outdelim
23 query<<-EOF
24 CREATE TEMPORARY TABLE _rmuser(user);
25 .import $target _rmuser
26 .mode list
27 .head 1
28 SELECT name,
29 max(CASE key WHEN 'gecos' THEN val END) gecos,
30 max(CASE key WHEN 'login' THEN val END) login
31 FROM user_s
32 WHERE name IN (SELECT * FROM _rmuser)
33 GROUP by name;
34 SELECT count(name) || ' users' "To be removed"
35 FROM user WHERE name IN (SELECT * FROM _rmuser);
36 EOF
38 outdelim
39 echo "Remove them? (Type C-c to abort)" >&2
40 read ans
42 # Remove users in Base World
43 query "DELETE FROM user WHERE name IN (SELECT * FROM _rmuser);"
45 # Remove users in Extra World
46 for world in $S4WORLDLIST; do
47 case "$world" in # tag:shortname:desc
48 *:*:*:*) continue ;;
49 *:*:*)
50 t_s=${world%:*} # tag:shortname
51 d=${world##*:} # desc
52 w=${t_s#*:} # shortname
53 ;;
54 *) continue ;;
55 esac
56 wdb=`(unset DB; . ./s4-config-$w.sh; echo $DB)`
57 echo "Operate on world $d($wdb)" >&2
58 query <<-EOF
59 ATTACH DATABASE "$wdb" AS w;
60 DELETE FROM w.user WHERE name IN (SELECT * FROM _rmuser);
61 DETACH DATABASE w;
62 EOF
63 done