[Server-devel] [PATCH] Utility function for the batch removal of XO users

Douglas Bagnall douglas at paradise.net.nz
Mon Aug 11 19:26:35 EDT 2008


    
    This removes the named XO users from both the SQL and system databases.
    
    To remove all users, use something like
    
     /home/idmgr/remove_user `sqlite3 /home/idmgr/identity.db \
        "select serial from laptops"`

diff --git a/Makefile b/Makefile
index fad74be..1065310 100644
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@
 
 NAME = idmgr
 VERSION = 0.1.2
-RELEASE = 3
+RELEASE = 5
 ARCH = noarch
 
 # install root
@@ -16,6 +16,7 @@ CONF_SRC = conf.schoolserver
 
 #  Scripts
 CREATE_USER = create_user
+REMOVE_USER = remove_user
 CREATE_REGISTRATION = create_registration
 LIST_REGISTRATION = list_registration
 IDMGR_INIT = idmgr
@@ -27,10 +28,12 @@ SERVER = idmgr/
 #  All scripts
 SRC_FILES = $(CONF_SRC)/$(CREATE_USER) $(CONF_SRC)/$(CREATE_REGISTRATION) \
 	$(CONF_SRC)/$(LIST_REGISTRATION) $(CONF_SRC)/$(IDMGR_INIT) \
-	$(CONF_SRC)/$(IDMGR_CONFIG) $(CONF_SRC)/$(UPDATE_USERS_01)
+	$(CONF_SRC)/$(IDMGR_CONFIG) $(CONF_SRC)/$(UPDATE_USERS_01) \
+	$(CONF_SRC)/$(REMOVE_USER)
 FILES = $(BIN_DST)/$(CREATE_USER) $(BIN_DST)/$(CREATE_REGISTRATION) \
 	$(BIN_DST)/$(LIST_REGISTRATION) $(INIT_DST)/$(IDMGR_INIT) \
-	$(CONFIG_DST)/$(IDMGR_CONFIG) $(BIN_DST)/$(UPDATE_USERS_01)
+	$(CONFIG_DST)/$(IDMGR_CONFIG) $(BIN_DST)/$(UPDATE_USERS_01) \
+	$(BIN_DST)/$(REMOVE_USER)
 
 # install rules
 $(DESTDIR):
@@ -48,6 +51,9 @@ $(CONFIG_DST): $(DESTDIR)
 $(BIN_DST)/$(CREATE_USER): $(CONF_SRC)/$(CREATE_USER) $(BIN_DST)
 	cp $(CONF_SRC)/$(CREATE_USER) $(BIN_DST)
 
+$(BIN_DST)/$(REMOVE_USER): $(CONF_SRC)/$(REMOVE_USER) $(BIN_DST)
+	cp $(CONF_SRC)/$(REMOVE_USER) $(BIN_DST)
+
 $(BIN_DST)/$(UPDATE_USERS_01): $(CONF_SRC)/$(UPDATE_USERS_01) $(BIN_DST)
 	cp $(CONF_SRC)/$(UPDATE_USERS_01) $(BIN_DST)
 
diff --git a/conf.schoolserver/remove_user b/conf.schoolserver/remove_user
new file mode 100755
index 0000000..47926ae
--- /dev/null
+++ b/conf.schoolserver/remove_user
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+for serial; do
+    echo "$serial" | grep -s -E '^[A-Z]{3}[A-F0-9]{8}$' || exit 1
+    sqlite3 /home/idmgr/identity.db "DELETE FROM laptops WHERE serial =
'$serial'" || exit 1
+    userdel $serial
+done
\ No newline at end of file
diff --git a/idmgr.spec b/idmgr.spec
index b405560..dd6f1f0 100644
--- a/idmgr.spec
+++ b/idmgr.spec
@@ -4,7 +4,7 @@
 Summary: XS Registration Manager
 Name: idmgr
 Version: 0.1.2
-Release: 3
+Release: 5
 License: GPL
 Group: Base System/System Tools
 URL: http://dev.laptop.org/git.do?p=projects/idmgr;a=summary
@@ -79,6 +79,7 @@ rm -rf $RPM_BUILD_ROOT
 /etc/idmgr.conf
 /home/idmgr/create_registration
 /home/idmgr/create_user
+/home/idmgr/remove_user
 /home/idmgr/update_users_0_to_1.py
 /home/idmgr/update_users_0_to_1.pyo
 /home/idmgr/update_users_0_to_1.pyc



More information about the Server-devel mailing list