Python3.4实现远程控制电脑开关机

Python3.4实现远程控制电脑开关机攻略

准备工作

为了实现远程控制电脑开关机,需要满足以下几个条件:

  • 两台电脑在同一局域网内
  • 接收控制开关机指令的电脑开启远程连接功能
  • 控制开关机指令发送电脑安装有Python3.4或以上版本

在满足以上条件的情况下,我们就可以开始进行远程控制开关机了。

第一步:开启远程管理服务

在接收指令的电脑上,需要开启远程管理服务,这样在发送控制指令的电脑上就可以通过远程连接控制该电脑的开关机。

具体步骤如下:

  1. 打开文件浏览器,在计算机上右键,选择“管理”选项,打开计算机管理窗口。
  2. 在窗口中选择左侧“本地服务和应用程序”下的“服务”选项。
  3. 在列表中找到服务名为“远程桌面服务用户模式”,然后右键单击该服务,选择“属性”选项。
  4. 在属性页面中,找到“常规”选项卡,在“启动类型”中选择“自动”。然后在“服务状态”中单击“启动”按钮,启动服务。

完成以上步骤后,就可以开始进行远程控制电脑的开关机功能了。

第二步:使用Python远程控制电脑开关机

在完成了远程管理服务的设置后,我们需要用Python编写控制开关机的代码,以方便进行远程控制。

具体步骤如下:

  1. 在控制开关机指令发送电脑上,用文本编辑器创建一个名为“wake_on_lan.py”(此名称可自定义)的文件,将下面的代码复制到该文件中,并保存。
#导入Python的socket库
import socket

def WakeOnLan(ethernet_address):
  #设定MagicPacket,第一部分为六个FFs,后面为16次受电脑MAC地址重复
  MagicPacket = bytes.fromhex('FF' * 6 + ethernet_address * 16)
  #利用Python的socket库发送MagicPacket到广播
  with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as sock:
    sock.bind(('0.0.0.0',12345))
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
    #MagicPacket要发送到的广播地址
    #可以通过改动最后一个参数,获取本地广播地址
    sock.sendto(MagicPacket, ('192.168.1.255', 9))

if __name__ == '__main__':
  #PC的MAC地址需转换为16进制,格式为"XX-XX-XX-XX-XX-XX"
  WakeOnLan(['XX', 'XX', 'XX', 'XX', 'XX', 'XX'])
  1. 在第一条指令的后面粘贴以下代码,实现控制指令的发送和接收。在代码中,将ip_address赋值为接受开关机指令的电脑的IP地址。
#导入Python的socket库
import socket

#定义发送开机指令的函数
def turn_on(ip_address, port):
    #发送消息内容为"0",表示开机(具体内容可根据需求改动)
    message = bytes("0", 'utf-8')
    #使用IPv4、TCP协议进行套接字连接
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    #使用它来连接开机电脑的IP地址和端口
    client_socket.connect((ip_address, port))
    #发送消息内容
    client_socket.sendall(message)
    #关闭套接字
    client_socket.close()

#定义发送关机指令的函数
def turn_off(ip_address, port):
    #发送消息内容为"1",表示关机(具体内容可根据需求改动)
    message = bytes("1", 'utf-8')
    #使用IPv4、TCP协议进行套接字连接
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    #使用它来连接开关机电脑的IP地址和端口
    client_socket.connect((ip_address, port))
    #发送消息内容
    client_socket.sendall(message)
    #关闭套接字
    client_socket.close()

#主函数
if __name__ == '__main__':
    #定义要连接的电脑的IP地址和端口    
    ip_address = '192.168.1.101'
    port = 5000

    #等待用户输入
    command = input("请输入需要执行的指令(开机请输入 turn_on,关机请输入 turn_off): ")
    #判断用户输入,调用相应的函数
    if command == "turn_on":
        #调用发送开机指令的函数
        turn_on(ip_address, port)
    elif command == "turn_off":
        #调用发送关机指令的函数
        turn_off(ip_address, port)
    else:
        print("请输入正确的指令")

完成以上步骤后,就可以通过在该电脑运行脚本并输入指令实现远程控制另一台电脑的开关机。

示例

下面介绍两种示例,分别是控制台应用和网页应用。

控制台应用示例

在控制开关机指令发送电脑上,打开Terminal或命令提示符,进入脚本所在目录,输入以下命令:

python3 wake_on_lan.py

然后输入以下命令,想要控制的电脑的IP地址需要根据实际情况进行替换。

python3 remote_control_pc.py 192.168.1.101

接下来根据需要输入“turn_on”或者“turn_off”,即可完成远程控制该电脑的开关机。

网页应用示例

我们还可以使用Flask(Python Web框架)来实现远程控制网页应用。

在操作的电脑上,打开终端或命令提示符,执行以下命令:

pip install flask

安装完成Flask框架后,再执行以下命令创建一个名为“app.py”的文件,并将以下代码复制到该文件中,保存。

#导入Flask框架
from flask import Flask, render_template, request
from remote_control_pc import turn_on, turn_off
import os

#创建Flask应用实例
app = Flask(__name__)

#首页
@app.route('/')
def index():
    return render_template('index.html')

#开机操作
@app.route('/turn_on')
def turn_on_action():
    #目标电脑的IP地址
    ip_address = '192.168.1.101'
    #目标电脑的端口(需要与remote_control_pc.py的端口匹配)
    port = 5000
    #发送开机指令
    turn_on(ip_address, port)
    return '已经执行开机操作!'

#关机操作
@app.route('/turn_off')
def turn_off_action():
    #目标电脑的IP地址
    ip_address = '192.168.1.101'
    #目标电脑的端口(需要与remote_control_pc.py的端口匹配)
    port = 5000
    #发送关机指令
    turn_off(ip_address, port)
    return '已经执行关机操作!'

if __name__ == '__main__':
  app.run(host='0.0.0.0', port=os.environ.get('PORT', 5000))

在同级目录下再创建一个名为“templates”的文件夹,然后在该文件夹中创建一个名为“index.html”的静态HTML文件,并将以下代码复制到该文件中,并保存。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>远程电脑开关机控制</title>
</head>
<body>
  <header>
    <h1>远程电脑开关机控制</h1>
  </header>
  <form action="/turn_on" method="get">
    <button type="submit">开机</button>
  </form>
  <form action="/turn_off" method="get">
    <button type="submit">关机</button>
  </form>
</body>
</html>

在完成以上步骤后,就可以通过在执行该脚本,然后在浏览器访问“http://127.0.0.1:5000”来访问控制开关机网页页面。

当然,为了通过公网进行远程访问,你需要架设一个公网服务器,并在路由器中进行端口映射。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3.4实现远程控制电脑开关机 - Python技术站

(1)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • python读取文件列表并排序的实现示例

    Python读取文件列表并排序的实现示例 在Python中,我们可以使用os模块中的listdir()函数来读取指定目录下的所有文件,并使用sorted()函数对文件列表进行排序。本文将介绍如何listdir()函数和sorted()函数来读取文件列表并排序,以及两个示例说明。 读取文件列表并排序的基本概念 在Python中,我们可以使用os模块中的list…

    python 2023年5月13日
    00
  • Python中调用PowerShell、远程执行bat文件实例

    针对Python中调用PowerShell、远程执行.bat文件,我给您提供以下完整攻略。 一、Python中调用PowerShell 在Python中调用PowerShell,可以使用subprocess模块来实现。具体过程如下: 1.首先,需要导入subprocess模块: import subprocess 2.接着,使用subprocess.run方…

    python 2023年6月3日
    00
  • 使用Python横向合并excel文件的实例

    当我们需要整合多个excel文件时,可能需要将它们合并成一个文件。本篇教程将介绍如何使用Python横向合并多个excel文件的实例。 步骤 1:安装所需的模块 在开始之前,需要确保安装了pandas、openpyxl和xlrd模块。可以使用以下命令进行安装: pip install pandas openpyxl xlrd 步骤 2:读入多个Excel文件…

    python 2023年5月14日
    00
  • Python中变量的作用域详解

    在Python中,变量的作用域是指变量在程序中可见的范围。Python中的变量作用域分为全局作用域和局部作用域。本文将详细讲解Python中变量的作用域,包括全局变量、局部变量、global关键字、nonlocal关键字等内容,并提供两个示例。 全局变量 全局变量是在函数外部定义的变量,可以在程序的任何地方访问。以下是一个使用全局变量的示例: x = 10 …

    python 2023年5月15日
    00
  • python解析照片拍摄时间进行图片整理

    首先我们可以先了解一下所需的模块和方法。 exifread模块 可以使用exifread模块来解析图片的EXIF信息。 datetime模块 可以使用datetime模块将EXIF信息中的时间转化为datetime对象,以便进行比较和排序。 具体步骤如下: 导入所需模块: import exifread from datetime import dateti…

    python 2023年6月3日
    00
  • Python网络爬虫原理及实践

    作者:京东物流 田禹 1 网络爬虫 网络爬虫:是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。 网络爬虫相关技术和框架繁多,针对场景的不同可以选择不同的网络爬虫技术。 2 Scrapy框架(Python) 2.1. Scrapy架构 2.1.1. 系统架构 2.1.2. 执行流程 总结爬虫开发过程,简化爬虫执行流程如下图所示: 爬虫运行主要流程如下…

    python 2023年5月4日
    00
  • Python流程控制 if else实现解析

    Python流程控制if-else实现解析 if-else是Python中常用的流程控制语句,可以根据条件执行不同的代码块。本文将详细介绍if-else语句的使用方法,并提供两个示例。 if-else语句的基本用法 if-else语句的基本用法如下: if condition: # 如果条件成立,执行这里的代码块 else: # 如果条件不成立,执行这里的代…

    python 2023年5月15日
    00
  • python matplotlib 绘图 和 dpi对应关系详解

    下面是“python matplotlib 绘图 和 dpi对应关系详解”的完整攻略。 什么是dpi? DPI是dots per inch的缩写,意为每英寸点数,表示每英寸内有多少个像素点。在matplotlib中,dpi通常指的是一个图像的每英寸点数,控制着图片的分辨率。 dpi和图像质量的关系 dpi越高,图像质量越好,图像也会变得更加清晰。但是,同时也…

    python 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部