Ich bin relativ neu in Python und verstehe nicht, warum das gleiche Skript nicht auf meinem RS1221+ NAS läuft, sondern auf dem QNAP ts-219p ii ohne Probleme. Es handelt sich um ein WoL-Skript, das dazu dient, einen bestimmten PC über eine HTML-Seite zu öffnen. Sie drücken ein PNG-Bild, das dann ein PHP-Skript aufruft, das wiederum das besagte Python-Skript aufruft.
Ich habe gerade die PHP- und Python-Skripte von einem Kollegen kopiert. Es funktioniert mit dem QNAP ts-219p NAS-System, jedoch nicht mit dem neueren RS1221+. Die folgenden Pakete sind auf dem neuen System installiert: Python 3.9, Node.js v 18 und PHP 8.0.
In Web Station auf RS1221+ ist Python aktiviert und erscheint grün. Im Bereich „Bearbeiten“ ist auch das Modul „wakeonlan“ Version 3.0.0 installiert.
Dies ist das PHP-Skript, das das Python-Skript aufruft (wobei x ein Platzhalter ist und für Mac für den PC geändert wurde, den ich öffnen möchte). Meine Netzwerkadresse ist 192.168.0.1 /23:
<?php system ( "python wake.py 192.168.1.255 XX:XX:XX:XX:XX:XX"); header ("Location:index.html"); ?>
Hier ist mein Python-Skript (wake.py) für WoL, das heißt und auf dem Server laufen soll:
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))
Ich habe versucht, das Python-Skript so zu ändern, dass es ein anderes Modul verwendet:
from wakeonlan import send_magic_packet send_magic_packet('XX-XX-XX-XX-XX-XX')
Aber das funktioniert auch nicht. Wie gesagt, ich bin kein Python-Guru, deshalb würde ich mich über jeden Rat freuen.
对于任何回到这个问题的人:
使用这个https://pypi.org/project/wakeonlan/包解决了Python问题我遇到的所有问题。