refactor(cli): Add subcommands for wake and sleep operations
- Restructure CLI to use subparsers for wake and sleep commands - Add separate argument parsers for wake (port 9) and sleep (port 9999) commands - Maintain backward compatibility with existing authentication and configuration - Update help text and examples to reflect new command structure
This commit is contained in:
89
index.py
89
index.py
@@ -90,52 +90,105 @@ def main():
|
|||||||
"""Main entry point for the CLI application."""
|
"""Main entry point for the CLI application."""
|
||||||
parser = argparse.ArgumentParser(
|
parser = argparse.ArgumentParser(
|
||||||
description="Wake-on-LAN tool with authentication support",
|
description="Wake-on-LAN tool with authentication support",
|
||||||
|
formatter_class=argparse.RawDescriptionHelpFormatter
|
||||||
|
)
|
||||||
|
|
||||||
|
subparsers = parser.add_subparsers(dest='command', required=True, help='Available commands')
|
||||||
|
|
||||||
|
# Wake command parser
|
||||||
|
wake_parser = subparsers.add_parser(
|
||||||
|
'wake',
|
||||||
|
help='Send Wake-on-LAN packet (default port: 9)',
|
||||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||||
epilog="""
|
epilog="""
|
||||||
Examples:
|
Examples:
|
||||||
%(prog)s -m AA:BB:CC:DD:EE:FF -u admin -p secret
|
%(prog)s wake -m AA:BB:CC:DD:EE:FF -u admin -p secret
|
||||||
%(prog)s -m AA-BB-CC-DD-EE-FF -u user -p pass -H 192.168.1.100 -p 9999
|
%(prog)s wake -m AA-BB-CC-DD-EE-FF -u user -p pass -H 192.168.1.100
|
||||||
"""
|
"""
|
||||||
)
|
)
|
||||||
|
|
||||||
parser.add_argument(
|
wake_parser.add_argument(
|
||||||
'-m', '--mac',
|
'-m', '--mac',
|
||||||
required=True,
|
required=True,
|
||||||
help='MAC address of the target device (format: XX:XX:XX:XX:XX:XX or XX-XX-XX-XX-XX-XX)'
|
help='MAC address of the target device (format: XX:XX:XX:XX:XX:XX or XX-XX-XX-XX-XX-XX)'
|
||||||
)
|
)
|
||||||
|
|
||||||
parser.add_argument(
|
wake_parser.add_argument(
|
||||||
'-u', '--username',
|
'-u', '--username',
|
||||||
required=True,
|
required=True,
|
||||||
help='Username for authentication'
|
help='Username for authentication'
|
||||||
)
|
)
|
||||||
|
|
||||||
parser.add_argument(
|
wake_parser.add_argument(
|
||||||
'-p', '--password',
|
'-p', '--password',
|
||||||
required=True,
|
required=True,
|
||||||
help='Password for authentication'
|
help='Password for authentication'
|
||||||
)
|
)
|
||||||
|
|
||||||
parser.add_argument(
|
wake_parser.add_argument(
|
||||||
'-H', '--host',
|
'-H', '--host',
|
||||||
default='255.255.255.255',
|
default='255.255.255.255',
|
||||||
help='Target host address (default: 255.255.255.255 for broadcast)'
|
help='Target host address (default: 255.255.255.255 for broadcast)'
|
||||||
)
|
)
|
||||||
|
|
||||||
parser.add_argument(
|
wake_parser.add_argument(
|
||||||
|
'-P', '--port',
|
||||||
|
type=int,
|
||||||
|
default=9,
|
||||||
|
help='Target UDP port (default: 9)'
|
||||||
|
)
|
||||||
|
|
||||||
|
# Sleep command parser
|
||||||
|
sleep_parser = subparsers.add_parser(
|
||||||
|
'sleep',
|
||||||
|
help='Send Sleep packet (default port: 9999)',
|
||||||
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||||
|
epilog="""
|
||||||
|
Examples:
|
||||||
|
%(prog)s sleep -m AA:BB:CC:DD:EE:FF -u admin -p secret
|
||||||
|
%(prog)s sleep -m AA-BB-CC-DD-EE-FF -u user -p pass -H 192.168.1.100 -P 9999
|
||||||
|
"""
|
||||||
|
)
|
||||||
|
|
||||||
|
sleep_parser.add_argument(
|
||||||
|
'-m', '--mac',
|
||||||
|
required=True,
|
||||||
|
help='MAC address of the target device (format: XX:XX:XX:XX:XX:XX or XX-XX-XX-XX-XX-XX)'
|
||||||
|
)
|
||||||
|
|
||||||
|
sleep_parser.add_argument(
|
||||||
|
'-u', '--username',
|
||||||
|
required=True,
|
||||||
|
help='Username for authentication'
|
||||||
|
)
|
||||||
|
|
||||||
|
sleep_parser.add_argument(
|
||||||
|
'-p', '--password',
|
||||||
|
required=True,
|
||||||
|
help='Password for authentication'
|
||||||
|
)
|
||||||
|
|
||||||
|
sleep_parser.add_argument(
|
||||||
|
'-H', '--host',
|
||||||
|
default='255.255.255.255',
|
||||||
|
help='Target host address (default: 255.255.255.255 for broadcast)'
|
||||||
|
)
|
||||||
|
|
||||||
|
sleep_parser.add_argument(
|
||||||
'-P', '--port',
|
'-P', '--port',
|
||||||
type=int,
|
type=int,
|
||||||
default=9999,
|
default=9999,
|
||||||
help='Target UDP port (default: 9999)'
|
help='Target UDP port (default: 9999)'
|
||||||
)
|
)
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
# Send the Wake-on-LAN packet
|
# Send the appropriate packet
|
||||||
print(f"Sending Wake-on-LAN packet to {args.mac}...")
|
command_name = "Wake-on-LAN" if args.command == 'wake' else "Sleep"
|
||||||
|
print(f"Sending {command_name} packet to {args.mac}...")
|
||||||
print(f"Host: {args.host}:{args.port}")
|
print(f"Host: {args.host}:{args.port}")
|
||||||
print(f"Username: {args.username}")
|
print(f"Username: {args.username}")
|
||||||
|
|
||||||
success = send_wol_packet(
|
success = send_wol_packet(
|
||||||
mac_address=args.mac,
|
mac_address=args.mac,
|
||||||
username=args.username,
|
username=args.username,
|
||||||
@@ -143,7 +196,7 @@ Examples:
|
|||||||
host=args.host,
|
host=args.host,
|
||||||
port=args.port
|
port=args.port
|
||||||
)
|
)
|
||||||
|
|
||||||
if success:
|
if success:
|
||||||
print("Packet sent successfully!")
|
print("Packet sent successfully!")
|
||||||
return 0
|
return 0
|
||||||
|
|||||||
Reference in New Issue
Block a user