66 lines
No EOL
2.4 KiB
Python
66 lines
No EOL
2.4 KiB
Python
import sys
|
|
import os
|
|
import socket
|
|
import json
|
|
|
|
listfile = "wakeup_list.json"
|
|
listfile_path = "./" + listfile
|
|
|
|
|
|
#ファイルがない時の動作
|
|
if not os.path.isfile(listfile_path):
|
|
dummylist = {}
|
|
with open(listfile, "w") as list_write:
|
|
json.dump(dummylist, list_write, indent=4)
|
|
|
|
with open(listfile, "r") as list_read:
|
|
pclist = json.load(list_read)
|
|
|
|
if len(sys.argv) < 2:
|
|
print("\nwakeup7 - 0.1P\n引数の説明\n\n-a : リストにパソコンを追加します。(例 : wakeup7 -a PC名 MACアドレス)\n\n現在リストに登録されているPCは以下の通りです。\n" + str(pclist) + "\n")
|
|
|
|
elif sys.argv[1] == "-a":
|
|
if len(sys.argv[3]) == 17:
|
|
|
|
pclist[sys.argv[2]] = sys.argv[3]
|
|
|
|
with open(listfile, "w") as list_write:
|
|
json.dump(pclist, list_write, indent=4)
|
|
|
|
print(sys.argv[2] + " はMACアドレス " + sys.argv[3] + " として登録されました。")
|
|
else:
|
|
print("登録できません。構文が間違っている可能性があります。\n登録時の構文 : wakeup7 -a PC名 MACアドレス")
|
|
exit()
|
|
|
|
else:
|
|
|
|
ip = "255.255.255.255"
|
|
port = 9
|
|
|
|
if sys.argv[1] in pclist:
|
|
mac = pclist[sys.argv[1]]
|
|
remac = mac.replace(":", "").replace("-", "")
|
|
magic_packet = b"\xFF" * 6
|
|
for i in range(16):
|
|
magic_packet += bytes.fromhex(remac)
|
|
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
|
|
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
|
|
s.sendto(magic_packet, (ip, port))
|
|
print(sys.argv[1] + " に起動を要求しました。")
|
|
|
|
else:
|
|
mac = sys.argv[1]
|
|
remac = mac.replace(":", "").replace("-", "")
|
|
if len(remac) != 12:
|
|
print("\n有効なMACアドレスではない、またはリストに登録されていません。\n\n現在リストに登録されているPCは以下の通りです。\n" + str(pclist) + "\n")
|
|
exit()
|
|
|
|
magic_packet = b"\xFF" * 6
|
|
for i in range(16):
|
|
magic_packet += bytes.fromhex(remac)
|
|
|
|
with socket.socket(socket.AF_INET, socket.SOCK_DGRAM) as s:
|
|
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
|
|
s.sendto(magic_packet, (ip, port))
|
|
|
|
print("MACアドレス " + sys.argv[1] + " に起動を要求しました。") |