New Munki tool: Computer Name

managedsoftwareupdate has several methods you can use to identify your Macs to your Munki server. While the hierarchy is documented on the Munki wiki, the ComputerName field (accessible in System Preferences –> Sharing), is not one of them. Since our inventory system is tied to the computer name, we wanted Munki to use that as the identifier for manifests, too.

I wrote a small LaunchDaemon and script to write the ComputerName field to Munki’s ClientIdentifier field (which overrides the hierarchy mentioned above) each time it’s changed. This allows IT to rename Macs and manifests as needed, but also audit unauthorized computer name changes through MunkiReport.

The code is available on my GitHub repository.

Boot Scheduler

Like most things, Boot Scheduler was written to scratch an itch: students were powering off lab computers, which could stay off for weeks or months at a time (particularly in the smaller labs). These Macs would stop checking in to Munki, would be horribly out of date, and would behave unpredictably once powered on again – the AD binding could become broken, or they might reboot unexpectedly to apply security patches.

We discussed using the built-in pmset tool to power on all Mac labs daily, but we have a long winter break – we don’t want these Macs turning on and wasting energy without anyone around to use them. Since pmset has no concept of calendar dates beyond days of the week, we had to develop something custom.

My hope is that if you’re facing similar issues, Boot Scheduler can help you. You can grab it from my GitHub repository – be sure to check out the README for installation and customization instructions.

Deleting all printers

As I’m building new printer installers with The Luggage (there’s a great tutorial on the Munki wiki), I’ve often come across the need to delete all installed printers first. Maybe the printers are being replaced with a different model, or maybe the existing print queues were created by hand and have subtile naming differences.

I created a script (on my GitHub repository) and have been running it as part of Apple Remote Desktop, but it should work anywhere.

Tested with: 10.6, 10.8, 10.9

Setting the Software Update Server

Several years ago, I submitted a post to Mac OS X Hints. At the time, I worked for an Apple authorized service provider, and wanted an easy way to switch a customer’s computer to our Software Update Server temporarily, then switch back afterwards. Two users in the Mac OS X Hints forums helped me build an AppleScript application for this purpose.

I have since made significant improvements to the script, and still use it today. The code can be found in my GitHub repository.

Tested with: 10.4, 10.5, 10.6, 10.7, 10.8, 10.9

Backing up VMware Fusion images

Traditionally, VMware Fusion has not supported using Time Machine to backup your virtual machines. Although this changed with version 4, I’d rather not enable AutoProtect. Instead, I use Carbon Copy Cloner to backup my ‘Virtual Machines’ folder to the root of my Time Machine drive.

Just one catch – if VMware Fusion is open during the copy, eventually CCC will fill up the destination drive, as it’s repeatedly copying data that’s in use. The solution? A preflight script that checks for the VMware Fusion process, and aborts the backup if the program is currently running.

The scripts are available in my GitHub repository.

Scrolling switcher

Starting with 10.7 Lion, Apple switched the scrolling direction. This can cause some confusion with people used to older Mac OS versions, or those coming from a Windows background.

I wanted to see if it were possible to allow people to toggle this without needing to visit System Preferences, so I did some digging. I found a script for trackpads on Super User, but it used GUI scripting. I modified it for both the mouse and trackpad panes, and posted it to GitHub. Although there are two separate scripts, changing the scrolling direction seems to apply to both the mouse and trackpad.

That said, Charles Edge has posted the best way to do this at Krypted: Disable Natural Scrolling With a Script.

Tested with: 10.7, 10.8