From bde9d35b74c44c0bc2b972e77e7d539f79923603 Mon Sep 17 00:00:00 2001 From: "th.l" <thl-cmk@outlook.com> Date: Tue, 28 Jun 2022 19:32:38 +0200 Subject: [PATCH] update project --- agent_based/inv_opengear_base.py | 119 +++++++++++++++++++++++++++++++ inv_opengear_base.mkp | Bin 0 -> 1713 bytes packages/inv_opengear_base | 20 ++++++ 3 files changed, 139 insertions(+) create mode 100644 agent_based/inv_opengear_base.py create mode 100644 inv_opengear_base.mkp create mode 100644 packages/inv_opengear_base diff --git a/agent_based/inv_opengear_base.py b/agent_based/inv_opengear_base.py new file mode 100644 index 0000000..ade8a82 --- /dev/null +++ b/agent_based/inv_opengear_base.py @@ -0,0 +1,119 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# License: GNU General Public License v2 +# +# Author: thl-cmk[at]outlook[dot]com +# URL : https://thl-cmk.hopto.org +# Date : 2021-12-25 +# +# opengear base inventory +# +# sample string_table +# [ +# [ +# ['4.1.1u2 594cb83d ()', 'N/A'] +# ], +# [ +# ['1'], ['1'], ['1'], ['1'], ['1'], ['1'], ['1'], ['1'], ['1'], ['1'], ['2'], ['2'], ['2'], ['2'], ['2'], ['2'] +# ], +# [ +# ['.1.3.6.1.4.1.25049.1.60'] +# ] +# ] +# + +from typing import List, Optional + +from cmk.base.plugins.agent_based.agent_based_api.v1.type_defs import ( + StringTable, + InventoryResult, +) +from cmk.base.plugins.agent_based.agent_based_api.v1 import ( + Attributes, + register, + SNMPTree, + startswith, +) + +_opengear_models = { + ('.1.3.6.1.4.1.25049.1.11', 18): 'CM7116', # 16 serial + 2 usb lines + ('.1.3.6.1.4.1.25049.1.11', 34): 'CM7132', # 32 serial + 2 usb lines + ('.1.3.6.1.4.1.25049.1.11', 48): 'CM7148', # 48 serial + 2 usb lines + ('.1.3.6.1.4.1.25049.1.60', 16): 'IM4216', # 16 serial lines +} + + +def parse_inv_opengear_base(string_table: List[StringTable]) -> Optional[List]: + inv_data, ogSerialPortCTS, sysObjectID = string_table + + firmware_version, serial_number = inv_data[0] + + if serial_number == 'N/A': + serial_number = '' + number_of_lines = len(ogSerialPortCTS) + sysObjectID = sysObjectID[0][0] + model_name = _opengear_models.get((sysObjectID, number_of_lines), '') + + section = [] + + invPath = ['hardware', 'system'] + + for key, value in [ + ('serial', serial_number), + ('manufacturer', 'opengear'), + ('model', model_name), + ]: + if not value == '': + section.append((invPath, key, value)) + + invPath = ['software', 'firmware'] + + for key, value in [ + ('vendor', 'opengear'), + ('version', firmware_version), + ]: + if not value == '': + section.append((invPath, key, value)) + + return section + + +def inventory_opengear_base(section: List) -> InventoryResult: + for invPath, key, value in section: + yield Attributes( + path=invPath, + inventory_attributes={key: value}) + + +register.snmp_section( + name='inv_opengear_base', + parse_function=parse_inv_opengear_base, + fetch=[ + SNMPTree( + base='.1.3.6.1.4.1.25049.17.1', # OG-STATUSv2-MIB + oids=[ + '1', # ogFirmwareVersion + '2', # ogSerialNumber + ] + ), + SNMPTree( + base='.1.3.6.1.4.1.25049.17.2.1', # OG-STATUSv2-MIB + oids=[ + '19', # ogSerialPortCTS. ogSerialPortIndex don't exist so we use CTS to get the number of lines + ] + ), + SNMPTree( + base='.1.3.6.1.2.1.1', # SNMPv2-MIB + oids=[ + '2', # sysObjectID + ] + ), + ], + detect=startswith('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.25049'), # sysObjectID == opengear +) + +register.inventory_plugin( + name='inv_opengear_base', + inventory_function=inventory_opengear_base, +) diff --git a/inv_opengear_base.mkp b/inv_opengear_base.mkp new file mode 100644 index 0000000000000000000000000000000000000000..a8bf886af88a5a756d1d7ac4e6e3b538c9c73a6a GIT binary patch literal 1713 zcmV;i22S}OiwFobJG){6|7mV^UvF?_Zf9j-a$jO$b7d_uFfuYQHZnLab}le3FflG| zYj6PVSkZ3VHWbaXzk+ifWN)$}$+D9e@PMqviU3U-H0fSkLy#@nRwI+DNI4CP{QE9R z$(Ce0ZQ3<k2Oc0+L>^w=%S#@TipY!}{9xFCzURp&p#F5aJ@>%z++M%m?RkCRIX1i= zAp77MkTD*l;L1M{WI4E>1fPu{;|rP^17zGRtk)K5@kQL3E^kKxAJdG-l-`a)%Ewc> zY#U|+86jrVG)j0xiD)$m7)B9UVZv#8k7hJQG{Iz!gA`3EVKl~w;dF&lX1ymy1Jz*c zEIbQChWJ7@je;1FY&pTHiIz0PF+2j2&4MY<Qk<fIglHC}%ex@OXooG)H8_hnl@`~& zKEa*qEJ<j}ai|<%gPp7nI=}E-r@yE2#l^AnXl2)Zq|!TqN;&@Yj>I$w{Va_|0v4Pn zY;bgx=gnHsgj0*AbIG1XF=jx6M9(2?U!*I9_mKhP;1`*a#a41}j2}cJ5-hPWy+x5G zAs2pO))56f;<4nf6JMPavQ?f1L33@_wfpXgwX$r>cFNV(G9rG8KW0%X-85W5sW6gY zdJD0Hxh2Q4Pc64f$yhLnv7Zqhi6OeA1V0>T>_7ziZ+&2t{EPZ;_j@({2XwXmKa2i1 zmHsyesQG36Z<?rCl7G?YY4ZP`e6z4WqT=t#4t?H;@kV(!GP}`K8B<A8MNoSsRgk6h z0Skt1qp0vcYVK0hCMYUu3PBZyw-~~pluuE+M?M87k6y59>RGC-h^M3qMww7(XKp9g z&N8Dcoxmbl91H&o$%i6GOX>dyr73I)A$)%QcRlfcRsUVr)%yQT`~S9N{lNS?$KJ7e z_Ikxo^=<ojlYb9}(D59*_ni4h=wOmXarg-DOZ7h~4u3hySb8*x$Pp$hl-$E%fOH#& zsPk(F_U|wv^8w2EtaBnt8i!ExI+|j_@BqEKe1~3Pf>YSWud+!TO^Z6TawYXlo-GDw z|B(Vn@7}(KTh0LO-E@KTGT>Nn#Gci0+>YCm_V;X<vW^AIM4UZ%3NiRx>}pUtf<N^G zHz3b)EGKhO@6?-4PP!p#!3`G~mq%yDSWw1hne7;3^ZOs}S3S0S2UojRAAW_?ZqN2k z;n}xyD*V7-qcKbA67l;4LPpV29El($jGO3<Jg^0EP7&j)R(qVyBf_lmK2ZAK50c1Q zITo12eu!tRu-cN>)N47oH)3o}S#VyY;4NlZ%*{sooBFHva>k*XNyaf#ouqgUF~Olx z`EYr0b(7-U0kN7nyNmcj^xfEKn>rVwA^I$Nt=$9az-1IUCvCV|sxu?JqC@2Li{t8V z$VC~Opg1C!ebG|aD=c+gWvT0an<a1UlXs#lc_&Y{1k(kg>kCWjY+R2{S$JqP8jx$0 z1S!M*)(+7sFR6i?U!&4Q7`IX9_w{@miR$q{dL=A{0S`<>=hw2sD@gK-n`;xXd-i7X z0Z;k)OGr^=&B~_5Ex^x@sb=o6udWZ!rZ7IT$Ery*t8<2GX%E(4Sn4(m_3=f$`*h~Z z@qmgLlUB{=wwi8Lzc+8-hVVpi<jnKM4FD+h32DtSZ?#Gd&3gB3P$Z+RVq!oMcc38} z6;YDaRlpab#8?DrC<aMr7+B<ZY2++%E4#(_CRzn?CWI1Xr5J>kp@zYzjcMB~QOegc zVZMmMsIo*zhFOX@uO4s49MVE4&m9pdDdnRSq7@|2Mc8WP0h%TM+wJYx8J+PW_F}Sp zUGyMWA$=sM;=7f(H3@%ca4CktCPj;UMXq<a`ifL6wHW34s|oR7JrFy(6eChtSi5^4 z;W#WwZ>thW0w#uqsY=bp#bDib_!&AIsLmcBzDA+o79-2V&-+$Ah*>k-{ozseD<o-_ z5!qt6N1+sVhWT_c+@!kLD5{YN{&1&U9$Svm$2YG!*EeT3@2*#F=i>a2N^=^8tklQ) zn{D2d&i~9O&0lKHY%|@0spRESF1`wFynZW9%%?}=epfuFRX1}Lv?>MXB*dRk2#bXy z{0TCQ7)5s&HYbdLEI!?U+{w>3x#rSYY1jJxcwMnwDn|wX3GwAwC<*c7E{)YA#2m=O z&8eeRa|V9Jrn@60pfa@{g<=%*SR7u~t7NmL)bZ(SR?4Q$dbR9P4{=b^A3`)VG&D3c zG&D3cG&D3cG&D3cG&D3cG&D3cG&D3cG&D3cG&D3cG&D3cG&D3cG&D3c{)6}%9`nXl H08jt`#*sM3 literal 0 HcmV?d00001 diff --git a/packages/inv_opengear_base b/packages/inv_opengear_base new file mode 100644 index 0000000..ea3488e --- /dev/null +++ b/packages/inv_opengear_base @@ -0,0 +1,20 @@ +{'author': 'Th.L. (thl-cmk[at]outlook[dot]com)', + 'description': 'base inventory for opengear console servers.\n' + '\n' + 'Adds the serial number, model, manufacturer and firmware ' + 'version to the inventory.\n' + '\n' + 'Supported models:\n' + '- IM4216\n' + '- CM7116\n' + '- CM7132\n' + '- CM7148\n', + 'download_url': 'https://thl-cmk.hopto.org', + 'files': {'agent_based': ['inv_opengear_base.py']}, + 'name': 'inv_opengear_base', + 'num_files': 1, + 'title': 'opengear base inventory', + 'version': '20220628.v.0.01', + 'version.min_required': '2.0.0', + 'version.packaged': '2021.09.20', + 'version.usable_until': None} \ No newline at end of file -- GitLab