fedora-accounts process-shell-accounts.py,1.2,1.3

Toshio Ernie Kuratomi (toshio) fedora-extras-commits at redhat.com
Fri Aug 3 22:24:01 UTC 2007


Author: toshio

Update of /cvs/fedora/fedora-accounts
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv28568

Modified Files:
	process-shell-accounts.py 
Log Message:
* process-shell-accounts.py: Take a backup of any home directories that are
  going to be deleted.



Index: process-shell-accounts.py
===================================================================
RCS file: /cvs/fedora/fedora-accounts/process-shell-accounts.py,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- process-shell-accounts.py	15 Nov 2005 22:17:11 -0000	1.2
+++ process-shell-accounts.py	3 Aug 2007 22:23:58 -0000	1.3
@@ -5,6 +5,7 @@
 #  Add/remove home dirs.
 
 import sys, os, shutil, urllib2, getopt, errno
+import tempfile
 
 def chown_r(path, uid, gid):
     os.chown(path, uid, gid)
@@ -34,25 +35,30 @@
     src_dir = basetname
 db_dir = args[1]
 if not os.path.exists('/home/fedora'):
-	os.makedirs('/home/fedora')
+    os.makedirs('/home/fedora')
 have_users = os.listdir('/home/fedora')
 need_users = {}
 fh_passwd = open(src_dir + '/passwd', 'r')
+num_users = 0
 while 1:
     aline = fh_passwd.readline()
     if not aline: break
     if aline[0] != '.': continue
 
+    num_users += 1
+
     username, userdata = aline.split(None, 1)
     username = username[1:]
 
     need_users[username] = userdata.split(':')
 fh_passwd.close()
 
+assert num_users, "The user data file must have at least one user listed"
+
 for I in maps: 
     os.system('makedb -o %s/%s.db %s/%s' % (db_outdir, I, src_dir, I))
     if I == 'shadow':
-	os.chmod('%s/%s.db' % (db_outdir, I), 0400)
+        os.chmod('%s/%s.db' % (db_outdir, I), 0400)
 
 del_homedir = []
 add_homedir = []
@@ -64,13 +70,26 @@
         assert Idata[5] == ('/home/fedora/' + I)
         add_homedir.append((I, '/home/fedora/' + I, int(Idata[2])))
 
-os.system("rm -rvf " + ' '.join(del_homedir))
+# Backup and delete home directories
+homedirs = ' '.join(del_homedir)
+backupFile = tempfile.mkstemp(suffix='.tar.gz', prefix='deleted_home_dirs.',
+        dir='/tmp/')
+backupCmd = os.popen('tar -czf - ' + homedirs, 'r')
+chunk = backupCmd.read(4096)
+while chunk:
+    os.write(backupFile[0], chunk)
+    chunk = backupCmd.read(4096)
+os.close(backupFile[0])
+backupCmd.close()
+print 'directories saved in %s' % backupFile[1]
+os.system("rm -rvf " + homedirs)
+
 for username, homedir, uid in add_homedir:
     os.system("cp -av /etc/skel " + homedir)
     try:
-	    os.mkdir(homedir + '/.ssh', 0700)
+        os.mkdir(homedir + '/.ssh', 0700)
     except OSError, e:
-	if e[0] != errno.EEXIST: raise
+        if e[0] != errno.EEXIST: raise
 
     chown_r(homedir, uid, uid)
     os.chmod(homedir, 0755)




More information about the fedora-extras-commits mailing list