Gorcupt

4-2

Apr 4th, 2022 (edited)
29
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.16 KB | None | 0 0
  1. 4-2
  2. import ping3
  3. import socket
  4. import graphviz
  5. from ipaddress import IPv4Network
  6. from concurrent.futures import ThreadPoolExecutor, as_completed
  7.  
  8. def ping(ip):
  9. try:
  10. available = ping3.ping(ip)
  11. except Exception:
  12. available = False
  13. return (ip, available)
  14.  
  15. def getAvailableIP(network):
  16. result = []
  17. with ThreadPoolExecutor() as executor:
  18. futures = []
  19. for ip in IPv4Network(network, strict=True):
  20. futures.append(executor.submit(ping, str(ip)))
  21. for future in as_completed(futures):
  22. ip, available = future.result()
  23. if available:
  24. result.append((ip, available))
  25. return result
  26.  
  27. if __name__ == '__main__':
  28. my_ip = socket.gethostbyname(socket.gethostname())
  29. all_ip = getAvailableIP('192.168.1.0/255.255.255.0')
  30. dot = graphviz.Digraph('round-table', comment='The Round Table')
  31. dot.node('my_ip', label=my_ip)
  32. for i, ip in enumerate(all_ip):
  33. if ip[0] != my_ip:
  34. dot.node(f'ip{i}', label=ip[0])
  35. dot.edge('my_ip', f'ip{i}', label=str(round(ip[1],6)))
  36. dot.render(directory='doctest-output', view=True)
Add Comment
Please, Sign In to add comment