s4

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