Python3.4实现远程控制电脑开关机攻略
准备工作
为了实现远程控制电脑开关机,需要满足以下几个条件:
- 两台电脑在同一局域网内
- 接收控制开关机指令的电脑开启远程连接功能
- 控制开关机指令发送电脑安装有Python3.4或以上版本
在满足以上条件的情况下,我们就可以开始进行远程控制开关机了。
第一步:开启远程管理服务
在接收指令的电脑上,需要开启远程管理服务,这样在发送控制指令的电脑上就可以通过远程连接控制该电脑的开关机。
具体步骤如下:
- 打开文件浏览器,在计算机上右键,选择“管理”选项,打开计算机管理窗口。
- 在窗口中选择左侧“本地服务和应用程序”下的“服务”选项。
- 在列表中找到服务名为“远程桌面服务用户模式”,然后右键单击该服务,选择“属性”选项。
- 在属性页面中,找到“常规”选项卡,在“启动类型”中选择“自动”。然后在“服务状态”中单击“启动”按钮,启动服务。
完成以上步骤后,就可以开始进行远程控制电脑的开关机功能了。
第二步:使用Python远程控制电脑开关机
在完成了远程管理服务的设置后,我们需要用Python编写控制开关机的代码,以方便进行远程控制。
具体步骤如下:
- 在控制开关机指令发送电脑上,用文本编辑器创建一个名为“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'])
- 在第一条指令的后面粘贴以下代码,实现控制指令的发送和接收。在代码中,将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技术站