python实现远程唤醒windows

class RemoteWake(object):
    def __init__(self):
        pass

    def format_mac0(self,mac):
        if len(mac) == 12:
            pass
        elif len(mac) == 17:
            if mac.count(':') == 5 or mac.count('-') == 5:
                sep = mac[2]
                mac = mac.replace(sep, '')
            else:
                raise ValueError('Incorrect MAC format')
        else:
            raise ValueError('Incorrect MAC format')
        return mac

    def format_mac(self,mac):
        mac_re = re.compile(r'''
        (^([0-9A-F]{1,2}[-]){5}([0-9A-F]{1,2})$
        |^([0-9A-F]{1,2}[:]){5}([0-9A-F]{1,2})$
        |^([0-9A-F]{1,2}[.]){5}([0-9A-F]{1,2})$
        )''', re.VERBOSE | re.IGNORECASE)
        # print(re.match(mac_re, mac))
        if re.match(mac_re, mac):
            if mac.count(':') == 5 or mac.count('-') == 5 or mac.count('.'):
                sep = mac[2]
                mac_fm = mac.replace(sep, '')
                return mac_fm
        else:
            raise ValueError('Incorrect MAC format')

    # 方法一:将989096C1FECB格式的mac地址创建唤醒包
    def create_magic_packet0(self,mac):
        data = b'FF' * 6 + (mac * 16).encode()
        print data
        print type(data)
        send_data = b''
        for i in range(0, len(data), 2):
            send_data = send_data + struct.pack(b'B', int(data[i: i + 2], 16))  # int(data[i: i+2], 16) 把16进制转换成整数
        print type(send_data)
        return send_data


    # 方法二:将989096C1FECB格式的mac地址创建唤醒包,使用binascii.unhexlify()方法
    def create_magic_packet(self,mac):
        data = 'FF' * 6 + str(mac) * 16
        # print(data)
        # print(type(data))
        send_data = binascii.unhexlify(data)
        # print(type(send_data))
        return send_data


    def send_magic_packet(self,send_data):
        # broadcast_address = '192.168.255.255'
        broadcast_address = '255.255.255.255'
        port = 9
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
        s.sendto(send_data, (broadcast_address, port))


    def boot_computer(self, mac_address):
        try:
            print '正在向 ', mac_address, ' 发送魔法唤醒包!'
            # mac = '98:90:96:C1:FE:CB'
            # 拼接mac地址
            mac = self.format_mac(mac_address)
            # 创建唤醒包
            send_data = self.create_magic_packet(mac)
            # 发送唤醒包
            self.send_magic_packet(send_data)
            return '成功向' + mac_address + '发送唤醒包!'
        except ValueError:
            print '未收到传入的参数\n获取帮助:python3 main_boot_computer.py -h'
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现PythonWindows远程登录,可以使用telnetlib库。以下是一个示例代码: ```python import telnetlib # 配置选项 Host = '192.168.1.2' # Telnet服务器IP username = 'admin' # 登录用户名 password = '123456' # 登录密码 finish = ':~$ ' # 命令提示符(标识着上一条命令已执行完毕) # 连接Telnet服务器 tn = telnetlib.Telnet(Host) # 输入登录用户名 tn.read_until(b'login: ') tn.write(username.encode('ascii') + b'\n') # 输入登录密码 tn.read_until(b'Password: ') tn.write(password.encode('ascii') + b'\n') # 登录完毕后,执行命令 tn.read_until(finish.encode('ascii')) tn.write(b'ls\n') # 命令执行完毕后,终止Telnet连接 tn.read_until(finish.encode('ascii')) tn.close() ``` 这段代码使用telnetlib库连接到指定的Telnet服务器,然后输入登录用户名和密码。登录成功后,执行了一个ls命令,并读取了命令执行结果。最后,关闭了Telnet连接。请注意,根据实际情况,你需要修改Host、username和password等参数来适应你的环境。 #### 引用[.reference_title] - *1* *3* [python实现远程telnet登录](https://blog.csdn.net/u010835747/article/details/126563222)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [使用Python实现Telnet远程登录](https://blog.csdn.net/weixin_42036402/article/details/117120765)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值