Yes - I looked on the App Store, but was surprised that none of them had integrated with Siri Shortcuts (that I could find anyway).
Here’s my Pythonista code:
wol.py - Goes in your
# -*- encoding: utf-8 -*-
Small module for use with the wake on lan protocol.
from __future__ import absolute_import
from __future__ import unicode_literals
BROADCAST_IP = '255.255.255.255'
DEFAULT_PORT = 9
Create a magic packet which can be used for wake on lan using the
mac address given as a parameter.
:arg macaddress: the mac address that should be parsed into a magic
if len(macaddress) == 12:
elif len(macaddress) == 17:
sep = macaddress
macaddress = macaddress.replace(sep, '')
raise ValueError('Incorrect MAC address format')
# Pad the synchronization stream
data = b'FFFFFFFFFFFF' + (macaddress * 16).encode()
send_data = b''
# Split up the hex values in pack
for i in range(0, len(data), 2):
send_data += struct.pack(b'B', int(data[i: i + 2], 16))
def send_magic_packet(*macs, **kwargs):
Wakes the computer with the given mac address if wake on lan is
enabled on that host.
:arguments macs: One or more macaddresses of machines to wake.
:key ip_address: the ip address of the host to send the magic packet
to (default "255.255.255.255")
:key port: the port of the host to send the magic packet to
packets = 
ip = kwargs.pop('ip_address', BROADCAST_IP)
port = kwargs.pop('port', DEFAULT_PORT)
for k in kwargs:
raise TypeError('send_magic_packet() got an unexpected keyword '
for mac in macs:
packet = create_magic_packet(mac)
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
for packet in packets:
I think I got it from GitHub originally wakeonlan.py, and the code seems to have changed slightly since I last used it. Might be best to work from the latest code.
Then I created the following which calls the above code:
# coding: utf-8
for arg in sys.argv:
# sys.argv: Mac Address
mac = sys.argv
# sys.argv: IP Address
ip = sys.argv
# sys.argv: Port
port = int(sys.argv)
port = 9
wol.send_magic_packet(mac, ip_address=ip, port=port)
dialogs.hud_alert('Magic Packet sent')
sys.argv - mac address,
sys.argv - ip address and
sys.argv - port are parameters which are passed to Pythonista from the Shortcuts app.
This is an example of a Shortcut to call the Pythonista
wake.py script, which in turn uses
wol.py to send the wake on LAN request.
I haven’t tested this method recently as I haven’t used it in a while, so if something isn’t working, let me know.