Python WoL 脚本无法在 Synology RS1221+ 上运行,但可以在 QNAP TS-219P II 上运行

问题描述 投票:0回答:1

我对 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 的大师,这就是为什么我会感谢所有建议。

python html synology wake-on-lan
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.