Advertisement
Guest User

Untitled

a guest
Nov 6th, 2013
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.78 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2. ##----------------------------------------------------------------------
  3. ## Cisco.IOS.get_bfd_sessions
  4. ##----------------------------------------------------------------------
  5. ## Copyright (C) 2007-2013 The NOC Project
  6. ## See LICENSE for details
  7. ##----------------------------------------------------------------------
  8.  
  9. # Python modules
  10. import re
  11. ## NOC modules
  12. from noc.sa.script import Script as NOCScript
  13. from noc.sa.interfaces import IGetBFDSessions
  14.  
  15. class Script(NOCScript):
  16. name = "Cisco.IOS.get_bfd_sessions"
  17. implements = [IGetBFDSessions]
  18.  
  19. rx_sessions = re.compile(r"Int\n\n\n\S+\s+(?P<remote_address>\S+)\s+.+\s+(?P<holdown>\d+)\s\((?P<mult>\d+)\s+\)\s+(?P<state>\S+)\s+(?P<local_interface>.+)\s+\n\n\nSession.+MinTxInt:\s+(?P<tx_interval>\d+).+Registered\sprotocols:\s(?P<protocols>.+)\n\n\nUptime.+My\sDiscr\.:\s(?P<local_discriminator>\d+)\s+-\sYour\sDiscr\.:\s(?P<remote_discriminator>\d+)\n.+", re.MULTILINE | re.DOTALL)
  20. def execute(self):
  21. r = []
  22. s = self.cli("show bfd neighbors details")
  23. for match in re.finditer(rx_sessions, s):
  24. r += [{
  25. "remote_address": match.group("remote_address"),
  26. "local_interface": match.group("local_interface"),
  27. "local_discriminator": int(match.group("local_discriminator")),
  28. "remote_discriminator": int(match.group("remote_discriminator")),
  29. "state": match.group("state").upper(),
  30. "clients": [self.client_map[c] for c in match.group("protocols").split()],
  31. "tx_interval": int(match.group("tx_interval")),
  32. "multiplier": int(match.group("mult")),
  33. "detect_time": int(match.group("holdown")) * 1000
  34. }]
  35. return r
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement