首頁  >  問答  >  主體

Python WoL 腳本在 Synology RS1221+ 上執行失敗,但在 QNAP TS-219P II 上成功運行

我對 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粉395056196P粉395056196244 天前436

全部回覆(1)我來回復

  • P粉955063662

    P粉9550636622024-02-18 09:14:58

    對於任何回到這個問題的人:

    使用這個https://pypi.org/project/wakeonlan/套件解決了Python問題我遇到的所有問題。

    回覆
    0
  • 取消回覆