pylcg/pylcg/cli.py
2024-11-26 01:17:23 -05:00

26 lines
1.0 KiB
Python

import argparse
from .core import ip_stream
def main():
parser = argparse.ArgumentParser(description='Ultra-fast random IP address generator with optional sharding')
parser.add_argument('cidr', help='Target IP range in CIDR format')
parser.add_argument('--shard-num', type=int, default=1, help='Shard number (1-based)')
parser.add_argument('--total-shards', type=int, default=1, help='Total number of shards (default: 1, no sharding)')
parser.add_argument('--seed', type=int, default=0, help='Random seed for LCG')
args = parser.parse_args()
if args.total_shards < 1:
raise ValueError('Total shards must be at least 1')
if args.shard_num > args.total_shards:
raise ValueError('Shard number must be less than or equal to total shards')
if args.shard_num < 1:
raise ValueError('Shard number must be at least 1')
for ip in ip_stream(args.cidr, args.shard_num, args.total_shards, args.seed):
print(ip)
if __name__ == '__main__':
main()