diff --git a/bundles/wol-sleeper/metadata.py b/bundles/wol-sleeper/metadata.py index 520df53..5febaf8 100644 --- a/bundles/wol-sleeper/metadata.py +++ b/bundles/wol-sleeper/metadata.py @@ -45,17 +45,20 @@ defaults = { @metadata_reactor.provides( 'wol-sleeper/mac', + 'wol-sleeper/waker_command', 'wol-sleeper/wake_command', ) def wake_command(metadata): waker_hostname = repo.get_node(metadata.get('wol-sleeper/waker')).hostname mac = metadata.get(f"network/{metadata.get('wol-sleeper/network')}/mac") - ip = ip_interface(metadata.get(f"network/{metadata.get('wol-sleeper/network')}/ipv4")).ip + network = ip_interface(metadata.get(f"network/{metadata.get('wol-sleeper/network')}/ipv4")) + waker_command = f"/usr/bin/wakeonlan -i {network.network.broadcast_address} {mac}" return { 'wol-sleeper': { 'mac': mac, - 'wake_command': f"ssh -o StrictHostKeyChecking=no wol@{waker_hostname} '/usr/bin/wakeonlan {mac}' && while ! ping {ip} -c1 -W3; do true; done", + 'waker_command': waker_command, + 'wake_command': f"ssh -o StrictHostKeyChecking=no wol@{waker_hostname} '{waker_command}' && while ! ping {network.ip} -c1 -W3; do true; done", }, } diff --git a/bundles/wol-waker/metadata.py b/bundles/wol-waker/metadata.py index 203b079..b968f01 100644 --- a/bundles/wol-waker/metadata.py +++ b/bundles/wol-waker/metadata.py @@ -17,7 +17,7 @@ def user(metadata): 'authorized_users': { f'root@{ssh_client.name}': { 'commands': { - '/usr/bin/wakeonlan ' + sleeper.metadata.get('wol-sleeper/mac') + sleeper.metadata.get('wol-sleeper/waker_command') for sleeper in repo.nodes if sleeper.has_bundle('wol-sleeper') and sleeper.metadata.get('wol-sleeper/waker') == node.name