From 95465e66ec771362c9ff66214b0e1d8b4416bdff Mon Sep 17 00:00:00 2001 From: belkir Date: Sat, 17 Sep 2022 20:45:06 +0300 Subject: [PATCH 1/2] add SNMP support for MikroTik.RouterOS.get_version --- sa/profiles/MikroTik/RouterOS/get_version.py | 29 +++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/sa/profiles/MikroTik/RouterOS/get_version.py b/sa/profiles/MikroTik/RouterOS/get_version.py index 8d0a003298..bbc128fe76 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 -- GitLab From 575fb1aa616724e40f80a6076086e0530657baa1 Mon Sep 17 00:00:00 2001 From: Kir Date: Wed, 28 Sep 2022 17:53:45 +0500 Subject: [PATCH 2/2] Black formatting --- sa/profiles/MikroTik/RouterOS/get_version.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sa/profiles/MikroTik/RouterOS/get_version.py b/sa/profiles/MikroTik/RouterOS/get_version.py index bbc128fe76..2dd7cff54e 100644 --- a/sa/profiles/MikroTik/RouterOS/get_version.py +++ b/sa/profiles/MikroTik/RouterOS/get_version.py @@ -70,7 +70,7 @@ class Script(BaseScript): "vendor": "MikroTik", "platform": match.group("platform") if match else "", "version": version, - "attributes": {} + "attributes": {}, } serial = self.snmp.get(mib["1.3.6.1.4.1.14988.1.1.7.3.0"]) -- GitLab