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] + " に起動を要求しました。")