Advertisement
ziggerzagger

Untitled

Jan 22nd, 2020
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.31 KB | None | 0 0
  1. import subprocess
  2. import datetime
  3. import re
  4.  
  5. import argparse
  6.  
  7. def write_result(filename, ping):
  8. with open(filename, "w") as f:
  9. f.write(f'Start time {datetime.datetime.now()}')
  10. for result in ping:
  11. f.write(result)
  12. f.write(f"End time {datetime.datetime.now()}")
  13.  
  14. def ping_subnet(subnet):
  15. for addr in range(1, 255):
  16. yield subprocess.Popen(["ping", f"{subnet}.{addr}", "-n", "1"], stdout=subprocess.PIPE) \
  17. .stdout.read() \
  18. .decode()
  19.  
  20. def main(subnet, filename):
  21. write_result(filename, ping_subnet(subnet))
  22.  
  23. def parse_arguments():
  24. parser = argparse.ArgumentParser(usage=% (prog)s [options] <subnet>,
  25. description='ip checker',
  26. epilog="python ipscanner.py 192.168.1 -f somefile.txt")
  27. parser.add_argument('subnet', type=str, help='the subnet you want to ping')
  28. parser.add_argument('-f', '--filename', type=str, help='The filename')
  29. args = parser.parse_args()
  30.  
  31. if not re.match(r"(\d{1,3}\.\d{1,3}\.\d{1,3})", args.subnet) \
  32. or any(a not in range(1, 255) for a in map(int, args.subnet.split("."))):
  33. parser.error("This is not a valid subnet... muhfukka.... doesn't that suck?")
  34.  
  35. if " " in args.filename:
  36. parser.error("There cannot be whitespaces in the filename")
  37.  
  38. return args.subnet, args.filename
  39.  
  40. if _name_ == '_main_':
  41. main(*parse_arguments())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement