Advertisement
Guest User

Untitled

a guest
Sep 14th, 2016
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.76 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # Get YANG models from a device by using the get-schema RPC.
  3. #
  4. # Kristian Larsson <kristian@spritelink.net>
  5. #
  6.  
  7. import urlparse
  8. import logging
  9. from ncclient import manager
  10. import ncclient
  11.  
  12. if __name__ == '__main__':
  13. import argparse
  14. parser = argparse.ArgumentParser()
  15. parser.add_argument("-u", "--username", required=True, help="Username")
  16. parser.add_argument("-p", "--password", required=True, help="Password")
  17. parser.add_argument("-P", "--port", default=830, help="Port")
  18. parser.add_argument("hosts", nargs="+")
  19. args = parser.parse_args()
  20.  
  21. logging.basicConfig(level=logging.DEBUG)
  22.  
  23. for host in args.hosts:
  24. with manager.connect(host=host, port=args.port, username=args.username,
  25. password=args.password, hostkey_verify=False,
  26. device_params={'name': 'junos'}) as m:
  27.  
  28. for cap in m.server_capabilities:
  29. print "Capability:", cap
  30. cap_parsed = urlparse.parse_qs(urlparse.urlparse(cap).query)
  31. if 'module' in cap_parsed:
  32. module_name = cap_parsed['module'][0]
  33. else:
  34. module_name = cap
  35.  
  36. print "Retrieving module:", module_name
  37. try:
  38. r = m.get_schema(identifier=module_name)
  39. except ncclient.operations.rpc.RPCError as exc:
  40. print "Failed, doing next.."
  41. continue
  42.  
  43. dx = r._data
  44.  
  45. try:
  46. with open("%s.yang" % module_name, 'w') as f:
  47. f.write(dx)
  48. except Exception as exc:
  49. print "CRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP", exc
  50. continue
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement