我对 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 大师,这就是为什么我会感谢所有建议。
对于任何回到这个问题的人:
使用这个https://pypi.org/project/wakeonlan/包解决了Python问题我遇到的所有问题。