diff --git a/sa/profiles/MikroTik/RouterOS/get_version.py b/sa/profiles/MikroTik/RouterOS/get_version.py index 8d0a00329888b7b5b70ce08077939b17929ef8da..2dd7cff54e62ee1a87cd11a7182c754f9ab8d9d1 100644 --- a/sa/profiles/MikroTik/RouterOS/get_version.py +++ b/sa/profiles/MikroTik/RouterOS/get_version.py @@ -1,7 +1,7 @@ # --------------------------------------------------------------------- # MikroTik.RouterOS.get_version # --------------------------------------------------------------------- -# Copyright (C) 2007-2019 The NOC Project +# Copyright (C) 2007-2022 The NOC Project # See LICENSE for details # --------------------------------------------------------------------- @@ -11,6 +11,7 @@ import re # NOC modules from noc.core.script.base import BaseScript from noc.sa.interfaces.igetversion import IGetVersion +from noc.core.mib import mib class Script(BaseScript): @@ -26,6 +27,7 @@ class Script(BaseScript): r"^\s+serial-number: (?P\"?)(?P\S+?)(?P=q)\s*\n", re.MULTILINE ) rx_boot = re.compile(r"^\s+current-firmware: (?P\"?)(?P\S+?)(?P=q)\s*\n", re.MULTILINE) + rx_platform_snmp = re.compile(r"RouterOS\s+(?P.*)") def execute_cli(self): v = self.cli("/system resource print") @@ -51,3 +53,28 @@ class Script(BaseScript): if arch: r["attributes"]["Arch"] = arch return r + + def execute_snmp(self): + try: + p = self.snmp.get(mib["SNMPv2-MIB::sysDescr", 0]) + except (self.snmp.TimeOutError, self.snmp.SNMPError): + raise NotImplementedError() + + match = self.rx_platform_snmp.search(p) + + version = self.snmp.get(mib["1.3.6.1.4.1.14988.1.1.4.4.0"]) + if not version: + version = self.snmp.get(mib["1.3.6.1.4.1.14988.1.1.7.4.0"]) + + r = { + "vendor": "MikroTik", + "platform": match.group("platform") if match else "", + "version": version, + "attributes": {}, + } + + serial = self.snmp.get(mib["1.3.6.1.4.1.14988.1.1.7.3.0"]) + if serial: + r["attributes"]["Serial Number"] = serial + + return r