From 9c9e0480801076c0200392aead231f73ef26bd79 Mon Sep 17 00:00:00 2001 From: "Th.L" <thl-cmk@outlook.com> Date: Thu, 18 Mar 2021 09:50:58 +0100 Subject: [PATCH] update project --- agent_based/inv_checkpoint_base.py | 147 +++++++++++++++++++++++ inv_checkpoint_base.mkp | Bin 50 -> 2372 bytes packages/inv_checkpoint_base | 6 +- web/plugins/views/inv_checkpoint_base.py | 13 ++ 4 files changed, 163 insertions(+), 3 deletions(-) create mode 100644 agent_based/inv_checkpoint_base.py create mode 100644 web/plugins/views/inv_checkpoint_base.py diff --git a/agent_based/inv_checkpoint_base.py b/agent_based/inv_checkpoint_base.py new file mode 100644 index 0000000..9f65fb4 --- /dev/null +++ b/agent_based/inv_checkpoint_base.py @@ -0,0 +1,147 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# Author: thl-cmk[at]outlook[dot]com / thl-cmk.hopto.org +# +# Check Point base inventory +# +# 2016-06-29 : inventory Check Point Appliance +# 2018-03-05 : added Patches, Deployment Agent Build +# 2018-03-07 : added Licenses +# 2020-06-01 : cleanup, prepared for cmk1.7x, rename from inv_checkpoint_svn to checkpoint_inv_base +# 2020-11-27 : rewrite for CMK check API 1.0 (CMK 2.0) +# 2020-11-28 : added available updates +# 2021-02-08 : transfered license/support info to seperate plugin +# 2021-02-22 : code cleanup +# 2021-03-05 : added hostlabel section +# 2021-03-18 : fixed missing update agent snmp section.. +# +# sample string_table +# [ +# [ +# ['5M7C043', 'Smart-1 5150', 'CheckPoint', 'Smart-1', 'R80.40', '994000022', 'Gaia', '3', '10'] +# ], +# [ +# ['1959'] +# ], +# ] +# + +from typing import List, NamedTuple + +from .agent_based_api.v1.type_defs import ( + HostLabelGenerator, + StringTable, + InventoryResult, +) +from .agent_based_api.v1 import ( + Attributes, + HostLabel, + register, + SNMPTree, + startswith, + all_of, + any_of, + equals, +) + + +def parse_inv_checkpoint_base(string_table: List[StringTable]) -> List: + class CheckpointInvBaseInfo(NamedTuple): + serialnumber: str + productname: str + manufacturer: str + series: str + version: str + build: str + osname: str + osmajorver: str + osminorver: str + + section = [] + baseinfo = CheckpointInvBaseInfo(*string_table[0][0]) + + try: + updateagentversion = string_table[1][0][0] + except IndexError: + updateagentversion = '' + + invPath = ['hardware', 'system'] + + if not baseinfo.serialnumber == '': + section.append((invPath, 'serial', baseinfo.serialnumber)) + if not baseinfo.series == '': + section.append((invPath, 'appliance_series', baseinfo.series)) + if not baseinfo.manufacturer == '': + section.append((invPath, 'manufacturer', baseinfo.manufacturer)) + if not baseinfo.productname == '': + section.append((invPath, 'product_name', baseinfo.productname)) + + invPath = ['software', 'check_point', 'os_info'] + + if not baseinfo.version == '': + section.append((invPath, 'svn_version', baseinfo.version)) + if not baseinfo.build == '': + section.append((invPath, 'svn_build', baseinfo.build)) + if not baseinfo.osname == '': + section.append((invPath, 'os_name', baseinfo.osname)) + if not baseinfo.osmajorver == '' and not baseinfo.osminorver == '': + section.append((invPath, 'os_version', baseinfo.osmajorver + '.' + baseinfo.osminorver)) + if not updateagentversion == '': + section.append((invPath, 'deployment_agent_build', updateagentversion)) + + return section + + +def host_label_inv_checkpoint_base(section: List) -> HostLabelGenerator: + for invPath, key, value in section: + if key == 'appliance_series' and value.lower() == 'maestro': + yield HostLabel('checkpoint/device_type', 'maestro') + + +def inventory_checkpoint_base(section: List) -> InventoryResult: + for invPath, key, value in section: + yield Attributes( + path=invPath, + inventory_attributes={key: value}) + + +register.snmp_section( + name='inv_checkpoint_base', + parse_function=parse_inv_checkpoint_base, + host_label_function=host_label_inv_checkpoint_base, + fetch=[ + SNMPTree( + base='.1.3.6.1.4.1.2620.1.6', # CHECKPOINT-MIB::svn + oids=[ + '16.3', # svnApplianceSerialNumber + '16.7', # svnApplianceProductName + '16.9', # svnApplianceManufacturer + '16.10', # svnApplianceSeries + '4.1', # svnVersion + '4.2', # svnBuild + '5.1', # osName + '5.2', # osMajorVer + '5.3', # osMinorVer + ] + ), + SNMPTree( + base='.1.3.6.1.4.1.2620.1.6.20', # CHECKPOINT-MIB::svnUpdatesInfo + oids=[ + '1', # svnUpdatesInfoBuild + ] + ), + ], + detect=any_of( + startswith('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.2620'), # sysObjectID == CheckPoint + all_of( + equals('.1.3.6.1.2.1.1.2.0', '.1.3.6.1.4.1.8072.3.2.10'), # sysObjectID == Linux + equals('.1.3.6.1.4.1.2620.1.6.1.0', 'SVN Foundation'), # CheckPoint software installed + ) + ) +) + +register.inventory_plugin( + name='inv_checkpoint_base', + inventory_function=inventory_checkpoint_base, +) diff --git a/inv_checkpoint_base.mkp b/inv_checkpoint_base.mkp index 25c2a98c2cac6e136fdc883909577201f19d1cc9..944c89ad80805677dd9f14db7ca37830322887a5 100644 GIT binary patch delta 2354 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 Y0)apv5C{YUf$+xo7d#&9Qvi4X0589=&;S4c delta 13 UcmX>iWW*-l&B0MEJdsTY02i<W8UO$Q diff --git a/packages/inv_checkpoint_base b/packages/inv_checkpoint_base index ad628da..aee6760 100644 --- a/packages/inv_checkpoint_base +++ b/packages/inv_checkpoint_base @@ -6,12 +6,12 @@ '- 2021-02-08: initial release\n' '- 2021-02-22: code cleanup\n', 'download_url': 'https://thl-cmk.hopto.org', - 'files': {'agent_based': ['checkpoint_inv_base.py'], - 'web': ['plugins/views/checkpoint_base.py']}, + 'files': {'agent_based': ['inv_checkpoint_base.py'], + 'web': ['plugins/views/inv_checkpoint_base.py']}, 'name': 'inv_checkpoint_base', 'num_files': 2, 'title': 'Check Point appliance base inventory plugin', - 'version': '20210222.v.0.1', + 'version': '20210318.v.0.1a', 'version.min_required': '2.0.0b8', 'version.packaged': '2.0.0', 'version.usable_until': None} \ No newline at end of file diff --git a/web/plugins/views/inv_checkpoint_base.py b/web/plugins/views/inv_checkpoint_base.py new file mode 100644 index 0000000..0507d21 --- /dev/null +++ b/web/plugins/views/inv_checkpoint_base.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import cmk.gui.utils +from cmk.gui.plugins.views import ( + inventory_displayhints,) +from cmk.gui.i18n import _ + +inventory_displayhints.update({ + '.software.check_point.os_info:': { + 'title': _('OS info'), + }, + }) -- GitLab