54 lines
1.8 KiB
Python
Executable File
54 lines
1.8 KiB
Python
Executable File
#!/usr/bin/env python3.6
|
|
|
|
import copy
|
|
from lxml import etree
|
|
|
|
with open('single_profile.xml', 'rb') as f:
|
|
xml = etree.fromstring(f.read())
|
|
|
|
single_profile = xml.xpath('/bdisk/profile[1]')[0]
|
|
alt_profile = copy.deepcopy(single_profile)
|
|
for c in alt_profile.xpath('//comment()'):
|
|
p = c.getparent()
|
|
p.remove(c)
|
|
|
|
# Change the profile identifiers
|
|
alt_profile.attrib['name'] = 'alternate'
|
|
alt_profile.attrib['id'] = '2'
|
|
alt_profile.attrib['uuid'] = '2ed07c19-2071-4d66-8569-da40475ba716'
|
|
|
|
meta_tags = {'name': 'AnotherCD',
|
|
'uxname': 'bdisk_alt',
|
|
'pname': '{xpath_ref%../name/text()}',
|
|
'desc': 'Another rescue/restore live environment.',
|
|
'author': 'Another Dev Eloper',
|
|
'email': '{xpath_ref%//profile[@name="default"]/meta/dev/email/text()}',
|
|
'website': '{xpath_ref%//profile[@name="default"]/meta/dev/website/text()}',
|
|
'ver': '0.0.1'}
|
|
# Change the names
|
|
meta = alt_profile.xpath('/profile/meta')[0]
|
|
for e in meta.iter():
|
|
if e.tag in meta_tags:
|
|
e.text = meta_tags[e.tag]
|
|
|
|
accounts_tags = {'rootpass': 'atotallyinsecurepassword',
|
|
'username': 'testuser',
|
|
'name': 'Test User',
|
|
'passowrd': 'atestpassword'}
|
|
accounts = alt_profile.xpath('/profile/accounts')[0]
|
|
for e in accounts.iter():
|
|
if e.tag in accounts_tags:
|
|
e.text = accounts_tags[e.tag]
|
|
if e.tag == 'rootpass':
|
|
e.attrib['hashed'] = 'no'
|
|
elif e.tag == 'user':
|
|
e.attrib['sudo'] = 'no'
|
|
# Delete the second user
|
|
accounts.remove(accounts[2])
|
|
xml.append(alt_profile)
|
|
|
|
#print(etree.tostring(xml).decode('utf-8'))
|
|
with open('multi_profile.xml', 'wb') as f:
|
|
f.write(b'<?xml version="1.0" encoding="UTF-8" ?>\n' + etree.tostring(xml,
|
|
pretty_print = True))
|