def on_message(client, userdata, msg): print(msg.topic + " " + str(msg.payload)) message = json.loads(msg.payload.decode("utf-8"))["data"] print("data: " + message) if message == BOOTUP_WORD: print("WOL EXECUTE") send_magic_packet(MACADDR)
def cmd(self, cmd): if "denon" in cmd: d = denonavr.DenonAVR(app_cfg['denon']['ip']) d.update() if cmd == "denon_input_digital": d.input_func = app_cfg['denon']['digital_in'] elif cmd == "denon_power_off": d.power_off() elif cmd == "denon_power_on": d.power_on() elif cmd == "denon_vol_down": d.volume_down() elif cmd == "denon_vol_mute": d.mute(True) #FIXME elif cmd == "denon_vol_up": d.volume_up() else: return '{"response":"invalid_cmd"}' return '{"response":"ok"}' elif "lg" in cmd: w = WebOsClient(app_cfg['lg']['ip']) w.register() if "lg_arr_" in cmd: w.request( "com.webos.service.networkinput/getPointerInputSocket") ws = websocket.WebSocket() ws.connect(w.last_response['payload']['socketPath']) if cmd == "lg_arr_down": ws.send('type:button\nname:DOWN\n\n') elif cmd == "lg_arr_up": ws.send('type:button\nname:UP\n\n') elif cmd == "lg_arr_left": ws.send('type:button\nname:LEFT\n\n') elif cmd == "lg_arr_right": ws.send('type:button\nname:RIGHT\n\n') elif cmd == "lg_arr_ok": ws.send('type:button\nname:ENTER\n\n') elif cmd == "lg_arr_back": ws.send('type:button\nname:BACK\n\n') elif cmd == "lg_cmd_pause": w.pause() elif cmd == "lg_input_netflix": w.launch_app(app_cfg['lg']['netflix']) elif cmd == "lg_input_ps4": w.set_input(app_cfg['lg']['ps4']) elif cmd == "lg_power_on": send_magic_packet(app_cfg['lg']['mac']) elif cmd == "lg_power_off": w.power_off() else: return '{"response":"invalid_cmd"}' return '{"response":"ok"}' else: return '{"response":"invalid_cmd"}'
def wakeup(self, hostname: str, mac: str, timeout:int=None) -> None: wakeonlan.send_magic_packet(mac) if timeout is None: self.ping(hostname) else: self.ping(hostname, timeout=timeout)
def turn_on(self): """Turn the media player on.""" if self._mac: wakeonlan.send_magic_packet(self._mac) self.update() else: self.send_command("KEY_POWERON")
def wakeup(host_idx): # Get host object host = Hosts.query.filter_by(idx=host_idx).one_or_none() send_magic_packet(host.mac, ip_address=host.ip, port=7) return host.name
def _send_wol_packet(self, wol_repeat=None): """Send a WOL packet to turn on the TV.""" if not self._mac: _LOGGER.error( "MAC address not configured, impossible send WOL packet" ) return False if not wol_repeat: wol_repeat = self._get_option(CONF_WOL_REPEAT, 1) wol_repeat = max(1, min(wol_repeat, MAX_WOL_REPEAT)) ip_address = self._broadcast or "255.255.255.255" send_success = False for i in range(wol_repeat): if i > 0: sleep(0.25) try: send_magic_packet(self._mac, ip_address=ip_address) send_success = True except socketError as exc: _LOGGER.warning( "Failed tentative n.%s to send WOL packet: %s", i, exc, ) except (TypeError, ValueError) as exc: _LOGGER.error("Error sending WOL packet: %s", exc) return False return send_success
def wake(x): global savedWindow global arp_window # print(len(x)) try: send_magic_packet(x[0:17]) if len(x) > 17: messagebox.showinfo(title="Wake sent", message="WOL sent to " + x[27:len(x)]) else: messagebox.showinfo(title="Wake sent", message="WOL sent to " + x[0:17]) except ValueError: messagebox.showerror( title="MAC Error", message="Incorrect MAC address entered (sending)" + x) # except: # print('something went wrong') try: arp_window.destroy() except: err = 9 try: savedWindow.destroy() except: err = 9
async def wol(self, ctx: commands.Context, machine: str): """ Wake a local computer. You can set up a short name with `[p]wolset add` so you don't need to write out the MAC each time, or just send the MAC. **Examples:** - `[p]wol main_pc` - `[p]wol 11:22:33:44:55:66` """ if len(machine) in (12, 17): # could be a MAC address try: send_magic_packet(machine) except ValueError: # okay it's not a valid format pass else: return await ctx.send("I've woken that machine.") data = await self.config.addresses() machine = machine.lower() if machine.lower() in data: send_magic_packet(data[machine.lower()]) return await ctx.send(f"I've woken {machine}.") await ctx.send( "I can't find that machine. You can add it with " if data else "You haven't added any machines yet. Get started with" + f"`{ctx.clean_prefix}wolset add <friendly_name> <mac>`.")
def _wake(): mac_address = sickrage.WAKE_MAC_ADDRESS logger.log('Waking machine before download with mac address "{}"'.format(mac_address), logger.DEBUG) send_magic_packet(mac_address) if sickbeard.WAIT_ENABLED and not _is_downloader_awake(): logger.log('Wake on download failed.', logger.WARNING)
def DoWakeOnLan(message): args, n = getArgs(message) if (n == 1): message.reply('At least, one index is required.') return UID, df, MAC_List = acquireInfo(message) print('wol command by ' + UID) if (df == {}): message.reply('No MAC address is registered.') return for Index in args[1:n]: if (checkIndexForm(Index) == False): message.reply( 'This index (' + Index + ') is skipped because it is not number. Index should be number.' ) continue targetAddr = MAC_List.get(str(Index)) if (MAC_List != None and targetAddr != None): message.reply('Sending a magic packet to ' + targetAddr['MAC']) macAddr = targetAddr['MAC'].replace('-', ':') send_magic_packet(str(macAddr)) print('Sending a magic packet to ' + macAddr + ' by ' + UID) else: message.reply('MAC address corresponding to the index (' + Index + ') you rquested does not exist.')
def runOp(self, controllerPc, hostPc, testLog, opParams): controllerPc.updateRunTimeStateInTerminal( hostPc, testLog, "\n turn on with lan command has started \n ") controllerPc.updateRunTimeStateInTerminal( hostPc, testLog, "\n wake on lun magic packet has been sent ") macAdress = turnOnWithLan.fetchMacAddress(hostPc["IP"]) # wake on lan send_magic_packet( macAdress, ip_address=hostPc["IP"], port=controllerPc.configs.defaultConfContent['hostPcServerPort']) controllerPc.updateRunTimeStateInTerminal( hostPc, testLog, "\n Wake on lan has been sent, pinging the host for checking if it's on" ) hostPcIsOn = operation.waitForPcToTurnOn(self, controllerPc, hostPc, testLog) if hostPcIsOn: controllerPc.updateRunTimeStateInTerminal( hostPc, testLog, "\nWake on lun succeed and the PC is ON") else: controllerPc.updateRunTimeStateInTerminal( hostPc, testLog, "\nWake on lun Failed and the PC is still off") return hostPcIsOn
def turn_on(self, **kwargs): """Turn the device on.""" if self._broadcast_address: wakeonlan.send_magic_packet(self._mac_address, ip_address=self._broadcast_address) else: wakeonlan.send_magic_packet(self._mac_address)
def do_POST(self): if self.path != PATH: return self._send(404) if self.headers.get('Content-Type') != 'application/json': return self._send(400) try: data = json.loads(self.content) except json.decoder.JSONDecodeError: return self._send(400) if data.get('key') != KEY: return self._send(400) state = data.get('state') or '' if 'off' in state: print('turning off computer') subprocess.call(['ssh', HOST, 'sudo', 'shutdown', '-h', 'now']) return self._send(200) if 'on' in state: print('turning on computer') send_magic_packet(MAC) return self._send(200) return self._send(400)
def main(): """Main runner """ global MAC_ADDRESS, IP_ADDRESS, REMOTE_NAME, SHARE_NAME # Load environment variables load_dotenv() if not has_valid_env(): create_env() SAMBA_PATH = "{}/{}".format(REMOTE_NAME, SHARE_NAME) # Wake Computer send_magic_packet(MAC_ADDRESS) print("Waiting for computer to boot...") # Wait for share to load retry = True conn = SMBConnection("", "", "", REMOTE_NAME) while retry: try: conn.connect(IP_ADDRESS) except SMBTimeout: sys.exit(1) except NotConnectedError: pass except ConnectionRefusedError: pass else: conn.close() retry = False # Connect to Samba subprocess.run(["open", "smb://{}".format(SAMBA_PATH)], check=False)
def on_message(client, userdata, msg): message = json.loads(msg.payload.decode('utf-8'))['data'] if message == BOOTUP_WORD: send_magic_packet(MACADDR) slack_post('WOLを実行しました') elif message == SLEEP_WORD: complete, err_mes = ssh_exec(PSSD_PATH + ' -d -t 5') check_and_post('sleep', complete, err_mes) elif message == SLEEP_LATER_WORD: slack_post('60秒後にsleepを実行します') time.sleep(60) complete, err_mes = ssh_exec(PSSD_PATH + ' -d') check_and_post('sleep_later', complete, err_mes) elif message == SHUTDOWN_WORD: complete, err_mes = ssh_exec(PSSD_PATH) check_and_post('shutdown', complete, err_mes) elif message == SHUTDOWN_LATER_WORD: slack_post('60秒後にshutdownを実行します') time.sleep(60) complete, err_mes = ssh_exec(PSSD_PATH) check_and_post('shutdown_later', complete, err_mes) elif message == "PING": slack_post('pingを受け取りました') else: slack_post('メッセージが違います')
def wake(request): device = request.GET.get('device') if device is not None: mac = MAC_TABLE.get(device) if mac is not None: send_magic_packet(mac) return HttpResponse(status=204)
def do_GET(self): if self.path == "/wake": wakeonlan.send_magic_packet("D0:50:99:81:D5:A4", ip_address="192.168.1.7") self._set_response() self.wfile.write("GET request for {}".format( self.path).encode('utf:8'))
def turn_on(self): """Turn the media player on.""" if self._power_off_in_progress(): self._end_of_power_off = None if self._is_ws_connection: self.hass.async_add_job(self.send_command, "KEY_POWER") else: self.hass.async_add_job(self.send_command, "KEY_POWEROFF") elif self._state == STATE_OFF: if self._mac: if self._broadcast: for i in range(20): wakeonlan.send_magic_packet(self._mac, ip_address=self._broadcast) time.sleep(0.25) else: for i in range(20): wakeonlan.send_magic_packet(self._mac) time.sleep(0.25) #Force Update as send command not called self.update(no_throttle=True) self.schedule_update_ha_state(True) else: self.hass.async_add_job(self.send_command, "KEY_POWERON") #Assume optomistic ON self._state = STATE_ON
def handle_power_xbox(self, message): powermode = message.data.get('powermode') if powermode == "on": self.speak_dialog('automation.home') send_magic_packet(self.settings.get('xbox_mac')) else: self.speak_dialog("power off xbox")
def wake_up(device): device_mac = Device.select(Device.mac).where(Device.mac == device).get() if device_mac: send_magic_packet(device_mac) return "Success" else: return "Device not found"
def wake(alias): if MAC_ADDRESS_PATTERN.match(alias): mac_address = alias else: try: with open(SSH_CONFIG_PATH) as fp: ssh_config = paramiko.SSHConfig.from_file(fp) except FileNotFoundError: stderr(f'No ssh config file found at "{SSH_CONFIG_PATH}"') exit(ExitCode.SSH_CONFIG_NOT_FOUND.value) host_config = ssh_config.lookup(alias) try: mac_address = host_config["macaddress"] except KeyError: stderr( f'No macaddress found for alias {alias} in "{SSH_CONFIG_PATH}"' ) exit(ExitCode.MAC_ADDRESS_NOT_FOUND.value) wakeonlan.send_magic_packet(mac_address) if alias == mac_address: print(f"Magic packet sent to {alias}") else: print(f"Magic packet sent to {alias} ({mac_address})") exit(ExitCode.SUCCESS.value)
def on_message(client, userdata, message): message.payload = message.payload.decode() print(f"Message received with payload {message.payload}") if re.match(r"[0-9a-f]{2}([-:\.]?)[0-9a-f]{2}(\1[0-9a-f]{2}){4}$", message.payload.lower()): send_magic_packet(message.payload,ip_address=WOL_BROADCAST_ADDR) print(f"Magic packet sent to {message.payload}.") else: print(f"Message payload has invalid mac address format!")
def turn_on(self): """Turn the media player on.""" if self._turn_on_action: self._turn_on_action.run() elif self._mac: wakeonlan.send_magic_packet(self._mac) else: self.send_key("KEY_POWERON")
def wake(x): try: send_magic_packet(x) messagebox.showinfo(title="Wake sent", message="WOL sent to " + str(x)) except ValueError: messagebox.showerror(title="MAC Error", message="Incorrect MAC address entered " + x) except: print('something went wrong')
async def boot(bt): if environ.get("isSuspended") == "True": return if MAC is None: await bt.edit("**We don't support magic! No MAC ADDRESS!**") return send_magic_packet(MAC) await bt.edit("**Sent magic package successfully!**")
def power_on(self): if self.power_ip and self.power_ip.startswith("wol:"): wolmac = self.power_ip[4:].replace(':', '-').strip() from wakeonlan import send_magic_packet send_magic_packet(wolmac, ip_address='.'.join( self.ip.split('.')[:3]+['255'])) return True elif self.ip and self.power_ip: # computer with wifi power button return self._power('uflash')
def turn_on(self): """Turn the media player on.""" _LOGGER.debug("function turn_on") if self._turn_on_action: self._turn_on_action.run(context=self._context) elif self._mac: wakeonlan.send_magic_packet(self._mac) else: self.send_key("KEY_POWERON")
def turn_on(self, **kwargs): if self._broadcast_address: wakeonlan.send_magic_packet(self._mac, ip_address=self._broadcast_address) else: wakeonlan.send_magic_packet(self._mac) self._state = True self._last_state_change = time.monotonic()
def Wake(self): """Wakes up the device using Wol protocol All device supported DIAL should be able to support Wol protocol Returns: The http response from this request. """ send_magic_packet(self.mac)
def sendPacket(count=1): """ Send a magic packet to all listed mac addresses, if count is higher than 1 it will be repeated (1s delay in between) """ for i in range(count): for mac in macAddresses: wakeonlan.send_magic_packet(mac) time.sleep(1)
def test_send_magic_packet(sock): """ Test whether the magic packets are broadcasted to the specified network. """ send_magic_packet( '133713371337', '00-00-00-00-00-00', ip_address='example.com', port=7) assert sock.mock_calls == [ call(socket.AF_INET, socket.SOCK_DGRAM), call().setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1), call().connect(('example.com', 7)), call().send( b'\xff\xff\xff\xff\xff\xff' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137'), call().send( b'\xff\xff\xff\xff\xff\xff' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00'), call().close(), ]
def test_send_magic_packet_default(sock): """ Test whether the magic packets are broadcasted using default values. """ send_magic_packet('133713371337', '00-00-00-00-00-00') assert sock.mock_calls == [ call(socket.AF_INET, socket.SOCK_DGRAM), call().setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1), call().connect(('255.255.255.255', 9)), call().send( b'\xff\xff\xff\xff\xff\xff' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137' b'\x137\x137\x137'), call().send( b'\xff\xff\xff\xff\xff\xff' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00' b'\x00\x00\x00\x00\x00\x00'), call().close(), ]
Version: 0.0.1 Author: Guodong Author Email: [email protected] URL: https://github.com/DingGuodong/LinuxBashShellScriptForOps Download URL: https://github.com/DingGuodong/LinuxBashShellScriptForOps/tarball/master Create Date: 2018/10/23 Create Time: 11:59 Description: wake on lan, WoL Long Description: References: Prerequisites: pip install wakeonlan Development Status: 3 - Alpha, 5 - Production/Stable Environment: Console Intended Audience: System Administrators, Developers, End Users/Desktop License: Freeware, Freely Distributable Natural Language: English, Chinese (Simplified) Operating System: POSIX :: Linux, Microsoft :: Windows Programming Language: Python :: 2.6 Programming Language: Python :: 2.7 Topic: Utilities """ from wakeonlan import send_magic_packet mac_lan = '34-E6-D7-4A-E6-0F' mac_wlan = '3c:a9:f4:bd:70:00' # test PASSED on Dell Latitude E6440. 192.168.88.255 is broadcast address of LAN send_magic_packet(mac_lan, ip_address='192.168.88.255') # test FAILED when using Wake on WLAN on Dell Latitude E6440. send_magic_packet(mac_wlan, ip_address='192.168.88.255')