#!/usr/bin/env python import os # A wrapper function, for debugging: def syscall(str): #print("making system call: " + str) os.system(str) projectDir = "/vmfs/volumes/datastore1/" imageName = "Windows\ XP\ Professional\ \(345\)" # imageName is *both* the folder containing the image, and # the stem of all the .vmdk,etc files contained therein. f = open("users.txt") #with open("users.txt") as f: for line in f: userInfo = line.split() userName = userInfo[0] password = userInfo[1] # used in other scripts, but not this one print("Starting user " + userName) userDir = projectDir + userName + "/" userImage = userName+"_WinXP"; syscall("mkdir " + userDir) syscall("cp -R " + (projectDir + imageName) + " " + userDir+userImage ) #imageSubDir = userDir + imageName + "/" imageSubDir = userDir + userImage + "/" # rename the image, so it has a unique name in the resource pool: syscall("sed -e s/displayName\ =\ \\\""+imageName+"\\\"/displayName\ =\ \\\""+userImage+"\\\"/g" + " " + (imageSubDir+imageName+".vmx") + " > tmp") syscall("sed -e s/"+imageName+".vmdk/"+userImage+".vmdk/g" + " " + "tmp" + " > tmp2") syscall("mv tmp2 " + (imageSubDir+imageName+".vmx")) syscall("vmkfstools --renamevirtualdisk " + (imageSubDir + imageName+".vmdk") + " " + (imageSubDir + userImage+".vmdk") ) # now register the vm: syscall("mv " + (imageSubDir+imageName+".vmx") + " " + (imageSubDir+userImage+".vmx")) #(above is req'd, to get default name correct) syscall("vim-cmd /solo/register " + imageSubDir + userImage+".vmx") f.close()