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 |