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