Wake sleeping Mac with Applescript and Automator

wake-and-share

I have a Mac mini in my living room hooked up to my TV. I wanted to be able to control the mini from my iMac in my office. Using Screen Sharing built into Leopard, it’s a simple click of the mouse to do this. With a little Automator love, I created a simple workflow that turns the Screen Sharing step into a click of an icon in the dock.

However, even with the power efficiency of the 2009 Mac mini, I don’t want to leave it on 24/7. After searching through several solutions that used Python and Shell Scripting (neither of which I know or could make work), I found a nifty Applescript from Mark Muir that I adapted to solve my problem:

(*
Script adapted from Wake on WAN - by Mark Muir (2008-04-01)
http://forums.dealmac.com/read.php?4,2751523
*)

property MAC_address : "00:25:4b:9f:63:c8"
property WAN_IP_address : "255.255.255.255"

on run
	set command to "/usr/bin/php -r " & quoted form of ("$mac = " & quoted form of MAC_address & "; $ip = " & quoted form of WAN_IP_address & "; " & "
$mac_bytes = explode(\":\", $mac);
$mac_addr = \"\";
for ($i=0; $i<6; $i++)
$mac_addr .= chr(hexdec($mac_bytes[$i]));
$packet = \"\";
for ($i=0; $i<6; $i++)	/*6x 0xFF*/
$packet .= chr(255);
for ($i=0; $i<16; $i++)	/*16x MAC address*/
$packet .= $mac_addr;

$port = 9;
$sock = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
socket_set_option($sock, SOL_SOCKET, SO_BROADCAST, TRUE);
socket_sendto($sock, $packet, strlen($packet), 0, $ip, $port);
socket_close($sock);
")
	do shell script command
end run

Rolling that into my Automator workflow gives me one-click access from my dock to wake my Mac mini over the network and start screen sharing on Leopard. Here is the final Automator workflow:

wake-and-share-mac-mini.zip (68KB)

2 Responses to “Wake sleeping Mac with Applescript and Automator”

  1. Michael Says:

    Thanks for posting it. It was the solution that I was looking for to wake my media center pc from my macbook!

  2. Joe Says:

    You’re very welcome. It was a real time saver when I finally found the solution.

Leave a Reply

Categories
Archives
Search