Created
August 24, 2016 19:33
-
-
Save timsutton/3781d7483b7cdf0358eb86cf28b49e50 to your computer and use it in GitHub Desktop.
Revisions
-
timsutton created this gist
Aug 24, 2016 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,65 @@ #!/usr/bin/python # # Simple script to batch-rename attached iOS devices according to UUID to name mappings # in a CSV file. # # Usage: rename_devices.py <csvfile> # # # The CSV file should be comma-separated and contain at least the 'udid' and 'name' # fields. Such a CSV can be exported from Configurator. Any additional field will simply # be ignored. # # "udid","name" # "0a70436a6d09cea07a70c72cd99ee0441602b5d8","MyOrg 1" # "0a70436a6d09cea619f7872cd99ee0441602b5e9","MyOrg 2" import csv import os import plistlib import subprocess import sys from pprint import pprint CFGUTIL = '/Applications/Apple Configurator 2.app/Contents/MacOS/cfgutil' def main(): if len(sys.argv) != 2: sys.exit("This tool takes a single argument: the path to the CSV containing the names and UDIDs") csv_file = sys.argv[1] if not os.path.exists(csv_file): sys.exit("Couldn't read CSV file at %s" % csv_file) # names will be populated with string UDID keys mapping to string user-facing names for the iPads names = {} with open(csv_file, 'rb') as csv_fd: reader = csv.DictReader(csv_fd, delimiter=',') for row in reader: names[row['udid']] = row['name'] proc = subprocess.Popen([CFGUTIL, '--format', 'plist', 'list'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = proc.communicate() try: ipad_devices = plistlib.readPlistFromString(out)['Output'] except: sys.exit("Error retrieving devices list with cfgutil") for ecid, data in ipad_devices.iteritems(): if data['UDID'] in names.keys(): name_to_set = names[data['UDID']] if name_to_set == data['name']: print "Device with UDID %s already has the desired name %s, continuing.." % ( data['UDID'], name_to_set) continue print "Found matching name for UDID %s: %s - attempting to rename" % ( data['UDID'], name_to_set) cmd = [CFGUTIL, '--ecid', ecid, '--progress', '-v', 'rename', name_to_set] print "Executing command: %s" % ' '.join(cmd) subprocess.call(cmd) if __name__ == '__main__': main()