summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/README4
-rwxr-xr-xtools/accounts2xml.py153
2 files changed, 0 insertions, 157 deletions
diff --git a/tools/README b/tools/README
index 335363898..9e7f667e3 100644
--- a/tools/README
+++ b/tools/README
@@ -1,9 +1,5 @@
This directory contains repository maintenance tools.
-accounts2xml.py
- - Generate an XML description of accounts on a machine from
- /etc/passwd
-
basebuilder.py <image directory>
- builds v2 base.xml from bcfg1 repo
diff --git a/tools/accounts2xml.py b/tools/accounts2xml.py
deleted file mode 100755
index 749f3b68c..000000000
--- a/tools/accounts2xml.py
+++ /dev/null
@@ -1,153 +0,0 @@
-#!/usr/bin/env python
-#===============================================================================
-#
-# FILE: accounts2xml.py
-#
-# USAGE: ./accounts2xml.py filename node_name
-#
-# DESCRIPTION: A python script to generate accounts.xml containing only the login
-# users from the given /etc/passwd file
-#
-# OPTIONS: ---
-# REQUIREMENTS: ---
-# BUGS: ---
-# NOTES: ---
-# AUTHOR: DongInn Kim (), dikim@cs.indiana.edu
-# ORGANIZATION: Center for Research in Extreme Scale Technologies
-# VERSION: 1.0
-# CREATED: 05/13/2012 01:44:43 PM
-# REVISION: ---
-#===============================================================================
-
-# encoding: utf-8
-
-"""
-accounts2xml.py
-
-This script coverts a csv file to an XML.
-The script takes 1 paramenters
-* filename
-
-e.g., ./accounts2xml.py /etc/passwd
-
-Created by Giovanni Collazo on 2011-02-19.
-Copyright (c) 2011 24veces.com. All rights reserved.
-
-Modified by DongInn Kim on 2012-05-13
-Copyright (c) 2012 Indiana University. All rights reserved.
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-THE SOFTWARE.
-
-"""
-
-import sys
-import csv
-import os
-import re
-import grp
-from xml.dom.minidom import Document
-
-def main(args):
-
- try:
- filename = "./copied_passwd"
- with file(args[1], 'r') as original: data = original.read()
- with file(filename, 'w') as modified: modified.write("name:pass:uid:gid:gecos:home:shell\n" + data); modified.close()
- safe_filename = "Properties"
- except IndexError:
- print("ERROR: Please provide a filename.csv as the first argument")
- sys.exit()
-
- node_user = "UnixUser"
- node_group = "UnixGroup"
-
- f = csv.reader(open(filename, 'rb'), delimiter=':')
-
- doc = Document()
- root_element = doc.createElement(safe_filename)
- doc.appendChild(root_element)
-
- columns = f.next()
-
- groups = dict()
- for row in f:
- match = re.search(r'/bin/\w*sh', row[6]) # adjust this line to match the right shell path
- if match:
- item = doc.createElement(node_user)
- root_element.appendChild(item)
- extra_groups = os.popen("groups %s" % row[0]).readline()[:-1]
- p_group = os.popen("id -gn %s" % row[0]).readline()[:-1]
- extra_groups_str = extra_groups.split(' : ')[1]
- populate_groups(groups, extra_groups_str)
- item.setAttribute('extra_groups', get_extra_group_str(extra_groups_str, p_group))
- create_col_nodes(columns, item, doc, row)
-
- for gkey, gval in groups.items():
- item = doc.createElement(node_group)
- root_element.appendChild(item)
- item.setAttribute('name', gkey)
- (gid,extra) = gval.split(':')
- item.setAttribute('gid', gid)
-
- output_file = "accounts.xml"
- doc.writexml(open(output_file, 'w'), addindent=' ', newl='\n') # Write file
-
- print("Done: Created %s" % output_file)
- os.remove(filename)
-
-def get_extra_group_str(group_str, p_group):
- groups = group_str.split(' ')
- groups = [x for x in groups if p_group != x]
- return ' '.join(groups)
-
-
-def create_col_nodes(cols, item, doc, row):
- for col in cols:
- if col == "gid":
- att = doc.createAttribute("group")
- att.nodeValue = grp.getgrgid(int(row.pop(0)))[0]
- else:
- att = doc.createAttribute(str.replace(col, " ", "_").lower())
- att.nodeValue = row.pop(0)
-
- if col != "pass":
- item.setAttributeNode(att)
-
-def populate_groups(group_dic, group_str):
- for g in group_str.split(' '):
- if not group_dic.has_key(g):
- group_ent = os.popen("getent group %s" % g).readline()[:-1].split(':')
- gid = group_ent[2]
- extra = group_ent[3]
- extra_list = list(extra)
- for e in extra_list:
- if e == ',':
- loc = extra_list.index(e)
- extra_list[loc] = ' '
- extra = "".join(extra_list)
- group_dic[g] = gid + ":" + extra
-
-
-if __name__ == "__main__":
- sys.exit(main(sys.argv))
-
-# vim:set sr et ts=4 sw=4 ft=python fenc=utf-8: // See Vim, :help 'modeline'
-# Created: Sun, 13 May 2012 13:44:43 -0400
-
-