Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # -*- coding: utf-8 -*-
- ##----------------------------------------------------------------------
- ## Cisco.IOS.get_bfd_sessions
- ##----------------------------------------------------------------------
- ## Copyright (C) 2007-2013 The NOC Project
- ## See LICENSE for details
- ##----------------------------------------------------------------------
- # Python modules
- import re
- ## NOC modules
- from noc.sa.script import Script as NOCScript
- from noc.sa.interfaces import IGetBFDSessions
- class Script(NOCScript):
- name = "Cisco.IOS.get_bfd_sessions"
- implements = [IGetBFDSessions]
- 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)
- def execute(self):
- r = []
- s = self.cli("show bfd neighbors details")
- for match in re.finditer(rx_sessions, s):
- r += [{
- "remote_address": match.group("remote_address"),
- "local_interface": match.group("local_interface"),
- "local_discriminator": int(match.group("local_discriminator")),
- "remote_discriminator": int(match.group("remote_discriminator")),
- "state": match.group("state").upper(),
- "clients": [self.client_map[c] for c in match.group("protocols").split()],
- "tx_interval": int(match.group("tx_interval")),
- "multiplier": int(match.group("mult")),
- "detect_time": int(match.group("holdown")) * 1000
- }]
- return r
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement