Пример #1
0
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)
Пример #2
0
    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"}'
Пример #3
0
    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")
Пример #5
0
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
Пример #6
0
    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
Пример #7
0
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
Пример #8
0
    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>`.")
Пример #9
0
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)
Пример #10
0
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.')
Пример #11
0
    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
Пример #12
0
 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)
Пример #13
0
    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)
Пример #14
0
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)
Пример #15
0
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('メッセージが違います')
Пример #16
0
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)
Пример #17
0
 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'))
Пример #18
0
 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
Пример #19
0
 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")
Пример #20
0
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"
Пример #21
0
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)
Пример #22
0
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")
Пример #24
0
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')
Пример #25
0
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!**")
Пример #26
0
 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')
Пример #27
0
 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")
Пример #28
0
    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()
Пример #29
0
  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)
Пример #30
0
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)
Пример #31
0
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(),
    ]
Пример #32
0
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')