From f2a280356de0cce5dd972b735da70ffa4b79a252 Mon Sep 17 00:00:00 2001 From: suti7yk5032 Date: Sun, 12 May 2024 22:03:06 +0900 Subject: [PATCH] 1st --- wakeup7 | 67 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ wakeup7.py | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 133 insertions(+) create mode 100644 wakeup7 create mode 100644 wakeup7.py diff --git a/wakeup7 b/wakeup7 new file mode 100644 index 0000000..f83e1d9 --- /dev/null +++ b/wakeup7 @@ -0,0 +1,67 @@ +#/usr/sbin/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] + " に起動を要求しました。") \ No newline at end of file diff --git a/wakeup7.py b/wakeup7.py new file mode 100644 index 0000000..c66f319 --- /dev/null +++ b/wakeup7.py @@ -0,0 +1,66 @@ +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] + " に起動を要求しました。") \ No newline at end of file