Advertisement
Guest User

Untitled

a guest
Jun 24th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.44 KB | None | 0 0
  1. import json
  2. import urllib3
  3.  
  4.  
  5. urllib3.disable_warnings()
  6.  
  7. URL = ""
  8. USER = ""
  9. PASSWORD = ""
  10.  
  11. STEP = 1000
  12.  
  13. HTTP = urllib3.PoolManager()
  14.  
  15.  
  16. def safe_json_decode(v):
  17. try:
  18. return json.loads(v)
  19. except ValueError:
  20. return None
  21.  
  22.  
  23. def body(start, limit):
  24. d = {'action': 'DeviceRouter',
  25. 'data': [{'keys': ['name', 'ipAddressString'],
  26. 'limit': limit,
  27. 'start': start,
  28. },
  29. ],
  30. 'method': 'getDevices',
  31. 'tid': 1}
  32. return json.dumps(d)
  33.  
  34.  
  35. def headers():
  36. h = urllib3.make_headers(basic_auth='{0}:{1}'.format(USER, PASSWORD))
  37. h["Content-Type"] = "application/json"
  38. return h
  39.  
  40.  
  41. def do_request(start, limit):
  42. resp = HTTP.request("POST", URL, headers=headers(), body=body(start, limit), timeout=50)
  43. return resp.data.decode()
  44.  
  45.  
  46. def get_devices_list():
  47. start = 0
  48. rv = dict()
  49. done = False
  50.  
  51. while True:
  52. raw = do_request(start, STEP)
  53. data = safe_json_decode(raw)
  54.  
  55. if not data:
  56. break
  57.  
  58. devices = data['result']['devices']
  59. count = len(devices)
  60.  
  61. rv.update(
  62. dict((v['ipAddressString'], v['name']) for v in devices),
  63. )
  64.  
  65. if count < STEP:
  66. done = True
  67. break
  68.  
  69. start = start + count
  70.  
  71. return rv if done else None
  72.  
  73.  
  74. d = get_devices_list()
  75.  
  76. print(d)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement