Python WoL 脚本在 Synology RS1221+ 上执行失败,但在 QNAP TS-219P II 上成功运行
P粉395056196
P粉395056196 2024-02-17 16:02:35
0
1
485

我对 Python 比较陌生,我不明白为什么相同的脚本不能在我的 RS1221+ NAS 上运行,但在 QNAP ts-219p ii 上运行却没有问题。它是一个 WoL 脚本,旨在通过 HTML 页面打开特定的 PC。您按下 PNG 图像,然后该图像调用一个 php 脚本,该脚本又调用所述 Python 脚本。

我只是从同事那里复制了 php 和 python 脚本。它适用于 QNAP ts-219p NAS 系统,但不适用于较新的 RS1221+。新系统上已安装以下软件包:Python 3.9、Node.js v 18 和 php 8.0。

在 RS1221+ 上的 Web Station 中,Python 已激活并显示绿色。模块“wakeonlan”版本3.0.0也安装在“编辑”部分。

这是调用 python 脚本的 php 脚本(其中 x 是占位符,并针对我想要打开的 PC 的 Mac 进行了更改)。我的网络地址是 192.168.0.1 /23:

<?php
system ( "python wake.py 192.168.1.255 XX:XX:XX:XX:XX:XX");
header ("Location:index.html");
?>

这是我用于 WoL 的 python 脚本 (wake.py),它被调用并且应该在服务器上运行:

import socket
import sys
 
if len(sys.argv) < 3:
    print("Usage: wakeonlan.py <ADR> <MAC>     (example: 192.168.1.255 00:11:22:33:44:55)")
    sys.exit(1)
 
mac = sys.argv[2]
data = ''.join(['FF' * 6, mac.replace(':', '') * 16])
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
sock.sendto(data.decode("hex"), (sys.argv[1], 9))

我已经尝试更改 Python 脚本以使用另一个模块:

from wakeonlan import send_magic_packet

send_magic_packet('XX-XX-XX-XX-XX-XX')

但这也不起作用。正如我所说,我不是 python 大师,这就是为什么我会感谢所有建议。

P粉395056196
P粉395056196

全部回复(1)
P粉955063662

对于任何回到这个问题的人:

使用这个https://pypi.org/project/wakeonlan/包解决了Python问题我遇到的所有问题。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板