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中list列表的高级函数

    以下是详细讲解“Python中List列表的高级函数”的完整攻略。 在Python中,列表是一种常用的数据类型,提供了许多高级函数来操作列表。本文将介绍Python中List列表的高级函数,并提供两个示例说明。 高级函数 1. map() map()函数用于对列表中的每个元素应用一个函数,并返回一个新的列表。例如: lst = [1, 2, 3, 4] ne…

    python 2023年5月13日
    00
  • 浅谈Python实现opencv之图片色素的数值运算和逻辑运算

    浅谈Python实现opencv之图片色素的数值运算和逻辑运算 一、背景介绍 OpenCV是计算机视觉领域最常用的开源计算机视觉和机器学习库之一,支持图像处理和计算机视觉中的许多常用算法。在Python中,OpenCV被认为是进行图像处理和计算机视觉项目的一个最常用的库。本文主要介绍如何使用Python和OpenCV进行图片色素的数值运算和逻辑运算。 二、实…

    python 2023年5月19日
    00
  • C#实现自动生成电子印章

    下面是详细的攻略: C#实现自动生成电子印章 前言 随着电子化程度的提升,越来越多的文件需要电子印章进行认证。本文将介绍使用C#编写程序,实现自动生成电子印章的过程。 准备工作 在开始之前,需要做好以下准备工作: 安装Visual Studio或其他C#开发环境 熟悉C#编程语言 安装iTextSharp和BouncyCastle等程序包 实现过程 以下是C…

    python 2023年6月3日
    00
  • 如何使用Python执行SQL语句?

    以下是如何使用Python执行SQL语句的完整使用攻略,包括导入模块、连接数据库、执行查询操作等步骤。同时,提供两个示例以便更好理解如何使用Python执行SQL语句。 步骤1:导入模块 在Python中,我们需要导入相应的模块来执行SQL语句。以下是导入pymysql模块的基本语法: import pymysql 步骤2:连接数据库 在Python中,我们…

    python 2023年5月12日
    00
  • 使用python实现将视频中的音频分离出来

    下面是使用Python实现将视频中的音频分离出来的完整攻略: 1. 安装依赖库 首先需要安装以下依赖库: moviepy:用于处理视频和音频 pydub:用于将音频分离出来 可以通过pip命令进行安装 pip install moviepy pydub 2. 处理视频 使用moviepy库中的VideoFileClip方法读取视频,并用audio属性获取音频…

    python 2023年5月19日
    00
  • 使用pyinstaller逆向.pyc文件

    使用 PyInstaller 逆向 .pyc 文件需要以下步骤: 安装 PyInstaller 使用 Pip 命令安装 PyInstaller: pip install pyinstaller 生成 .spec 文件 在终端或命令行中执行以下命令生成 .spec 文件: pyinstaller –name=app_name file.pyc 其中,–na…

    python 2023年6月3日
    00
  • Python Numpy 中的Hanning

    Hanning窗口是一种常用于信号处理和谱估计的窗口,可帮助去除频域泄漏问题。在Python的NumPy中,Hanning的实现方式是使用hanning()函数。下面是关于Python NumPy中Hanning的完整攻略。 什么是Hanning窗口 Hanning窗口是一种信号处理中的平滑窗口,它将信号切成若干小段,并给予每个点不同的权重。这种权重表现为一…

    python-answer 2023年3月25日
    00
  • Python YAML文件的读写操作详解

    Python YAML文件的读写操作详解 什么是 YAML? YAML 是 “YAML Ain’t Markup Language” 的递归缩写。它实际上是一种人类可读性更高,并且能够轻松被机器解析的标记语言。与用于创建网页和其他文档的标记语言 (例如 HTML 或 XML) 不同,YAML 的重点在于数据表示,而不是文档标记。 Python 中的 YAML…

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