Apple - Wake Other Computers from Mac OSX
Install the wakeonlan package using Homebrew:
$ brew install wakeonlan
(It's a Perl script for waking up computers via Wake-On-LAN magic packets.)
When installed, you can send a "magic packet" from your Terminal to any device using its IP (Internet Protocol) and MAC (Media Access Control) address.
Here's an example of a typical use:
$ wakeonlan -i 192.168.1.255 -p 1234 01:02:03:04:05:06
The scripts takes 2 arguments, the MAC address of the NIC, and an IP address.
Note: The IP address argument is tricky and isn't what you'd think.
For a NIC on your local subnet, use the broadcast-address of this subnet. (e.g. subnet 192.168.10.0 with netmask 255.255.255.0, use 192.168.10.255)
For example, I have a Synology NAS manually configured with the IP address of 10.0.1.100
with a subnet mask of 255.255.255.0
and a router address of 10.0.1.1
.
The correct IP address to use is not that of the device, but instead the broadcast-address of the subnet.
Continuing on my example, I used the following command to successfully wake up my Synology:
$ wakeonlan -i 10.0.1.255 -p 7 01:02:03:04:05:06
(Naturally, substitute the actual values of your device and network for your situation.)
You can get more information from the wakeonlan man page, man makeonlan
, or a quick glossary of commands from wakeonlan -h
.
The wakeonlan
command for command-line can be added to OS X using the homebrew package manager.
Python comes with OS X per default. So you could use this small Python 2 script to send the wake on lan package. Save it as wakeonlan.py
or something you like:
#!/usr/bin/env python
import socket
import sys
if len(sys.argv) < 3:
print "Usage: wakeonlan.py <ADR> <MAC> (example: 192.168.1.255 00:11:22:33:44:55)"
sys.exit(1)
mac = sys.argv[2]
data = ''.join(['FF' * 6, mac.replace(':', '') * 16])
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
sock.sendto(data.decode("hex"), (sys.argv[1], 9))
Use it like this:
python wake.py 192.168.1.255 00:11:22:33:44:55
Modify the IP address and MAC address accordingly. The IP address should be the broadcast address of the network.
For easy access you could make this script executable and add it to some directory in your path.