前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >WakeOnLan_Python

WakeOnLan_Python

作者头像
XRSec
发布2022-03-01 14:00:20
4130
发布2022-03-01 14:00:20
举报
文章被收录于专栏:XRSec.BlogXRSec.Blog

preview

attention

代码语言:javascript
复制
chmod 777 wol
cp wol /usr/bin/wol
vi /usr/bin/wol
wol / wol 1.1.1.1 / wol google.com
代码语言:javascript
复制
DestIp = "localhost"
DestNatIp = "127.0.0.1"
DestMacAddress = "B43E98F386A4"
DestPort = 9
代码语言:javascript
复制
#!/usr/bin/python3
# _*_ coding: utf-8 _*_

import socket, binascii, os, sys, requests, re


def banaer():
    os.system("clear")
    print("\n\033[24;37;34m __  __  ____                      \033[0m")
    print("\033[24;37;32m \ \/ / |  _ \   ___    ___    ___ \033[0m")
    print("\033[24;37;36m  \ \/  | |_) | / __|  / _ \  / __| \033[0m")
    print("\033[24;37;31m  /  \  |  _ <  \__ \ |  __/ | (__ \033[0m")
    print("\033[24;37;35m /_/\_\ |_| \_\ |___/  \___|  \___| \n\033[0m")
    print("\033[24;37;35m [ Help ] \n\033[0m")
    print("\033[24;37;31m wol / wol 1.1.1.1 / wol google.com \033[0m")
    print("\033[24;37;32m Edit wol「 DestIp DestPort DestMacAddress 」 \n\033[0m")


def DpmainToIp(dest_ip):
    web_status = requests.get("https://myssl.com/api/v1/tools/dns_query?qtype=1&host=%s&qmode=1" % dest_ip, timeout=5)
    try:
        dest_ip = (web_status.json()["data"])["86"][0]["answer"]["records"][0]["value"]
    except:
        try:
            if (web_status.json()["data"])["86"][0]["answer"]["records"] == "null":
                dest_ip = (web_status.json()["data"])["86"][0]["answer"]["records"][0]["value"]
        except:
            print("\033[24;37;31m Error : DpmainToIp > except > except \n\033[0m")
            exit()
    send_msg(dest_ip)


def IpOrDomain(dest_ip):
    check_ip = re.compile(
        '^(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|[1-9])\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|['
        '1-9]\d|\d)\.(1\d{2}|2[0-4]\d|25[0-5]|[1-9]\d|\d)$')
    if check_ip.match(dest_ip):
        send_msg(dest_ip)
    else:
        DpmainToIp(dest_ip)


def ip_init(dest_ip):
    if len(sys.argv) == 2:
        dest_ip = sys.argv[1]
        IpOrDomain(dest_ip)
    elif len(sys.argv) == 1:
        IpOrDomain(dest_ip)
    else:
        print("Domain error")


def send_msg(DestIp):
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    send_data = binascii.unhexlify('FF' * 6 + DestMacAddress * 16)
    udp_socket.sendto(send_data, (DestIp, DestPort))
    udp_socket.sendto(send_data, (DestNatIp, DestPort))
    print("\033[24;37;35m Python Wol " + DestIp + " Successful! \033[0m")
    print("\033[24;37;34m")


if __name__ == "__main__":
    # TODO
    DestIp = "localhost"
    DestNatIp = "127.0.0.1"
    DestMacAddress = "B43E98F386A4"
    DestPort = 9

    banaer()
    ip_init(DestIp)

转载请声明来源:Blog Github

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • preview
  • attention
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档