{"id":1077,"date":"2025-03-21T07:16:28","date_gmt":"2025-03-21T07:16:28","guid":{"rendered":"https:\/\/www.linuxsystems.ovh\/?p=1077"},"modified":"2025-03-21T07:16:28","modified_gmt":"2025-03-21T07:16:28","slug":"automatyczne-monitorowanie-aktualizacji-oprogramowania-na-mikrotiku-z-zabbixa","status":"publish","type":"post","link":"https:\/\/www.linuxsystems.ovh\/?p=1077","title":{"rendered":"Automatyczne monitorowanie aktualizacji oprogramowania na mikrotiku z zabbixa"},"content":{"rendered":"\n<p>Niestety, nie da si\u0119&nbsp;mie\u0107 bezpiecznego (ka\u017cda aktualizacja MO\u017bE zawiera\u0107 poprawki bezpiecze\u0144stwa) systemu\/sieci bez monitorowania czy nie ma jakiej\u015b aktualizacji oprogramowania w naszym sprz\u0119cie &#8211; w tym przypadku w mikrotiku.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Zacz\u0105\u0142em od tego, \u017ce stworzy\u0142em usera i klucz SSH i da\u0142em mo\u017cliwo\u015b\u0107&nbsp;logowania si\u0119 po SSH zabbixowi na usera o username zabbix.<\/p>\n\n\n\n<p>Nast\u0119pnie na zabbixie napisa\u0142em taki skrypt:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/usr\/bin\/env python3\n# Special script for zabbix to check upgrade\n\nfrom netmiko import ConnectHandler\nimport argparse\n\nparser = argparse.ArgumentParser(description=\"This script check in zabbix via SSH upgrade of your mikrotik\")\nparser.add_argument(\"host\", help=\"IP Address\")\nparser.add_argument(\"sshkey\", help=\"SSH Key File\")\nargs = parser.parse_args()\n\ndef check_upgrade(host, sshkey):\n    device = {\n        'device_type': 'mikrotik_routeros',\n        'host' : host,\n        'username':'zabbix',\n        'key_file': sshkey,\n        'port': 22\n    }\n\n    connection = ConnectHandler(**device)\n    try:\n        output = connection.send_command('\/system package update check-for-updates')\n        if \"New version is available\" in output:\n            result = 1\n            connection.disconnect()\n            return result\n        else:\n            result = 0\n            connection.disconnect()\n            return result\n\n    except Exception as e:\n        print(\"Error with connection to device\")\n        return -1\n\n\nif __name__ == \"__main__\":\n    print(check_upgrade(args.host, args.sshkey))\n<\/code><\/pre>\n\n\n\n<p>PS: tak pom\u00f3g\u0142 mi ChatGPT&#8230;<\/p>\n\n\n\n<p>Trzeba mie\u0107 &#8211; \u015bcie\u017ck\u0119 do klucza prywatnego, oraz adres IP mikrotika.<\/p>\n\n\n\n<p>Wklei\u0142em ten skrypt do katalogu:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/usr\/lib\/zabbix\/externalscripts<\/code><\/pre>\n\n\n\n<p>u mnie pod nazw\u0105 MikrotikUpdateZabbix.py<\/p>\n\n\n\n<p>na serwerze zabbix, oraz ustawi\u0142em mu usera:grup\u0119 zabbix: i uprawnienia do wykonywania<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>chown zabbix: \/usr\/lib\/zabbix\/externalscripts\nchmod 755 \/usr\/lib\/zabbix\/externalscripts<\/code><\/pre>\n\n\n\n<p>Mo\u017cna sprawdzi\u0107 czy skrypt dzia\u0142a poprzez wpisanie:<\/p>\n\n\n\n<p>\/usr\/lib\/zabbix\/externalscripts\/MikrotikUpdateZabbix.py &lt;IP_mikrotika&gt; &lt;\u015bcie\u017cka_do_klucza_prywatnego&gt;<\/p>\n\n\n\n<p>Je\u017celi nie masz odpowiednich bibliotek nale\u017cy je zainstalowa\u0107 poprzez np.:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>pip3 install netmiko<\/code><\/pre>\n\n\n\n<p>Teraz przechodzimy do zabbixa naciskamy:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Data Collections -&gt; Templates <\/code><\/pre>\n\n\n\n<p>Dajemy &#8222;Import Templates&#8221; i wklejamy ten template (lub plik)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?>\n&lt;zabbix_export>\n    &lt;version>7.2&lt;\/version>\n    &lt;template_groups>\n        &lt;template_group>\n            &lt;uuid>b2cad4fa4a6b4a409c164c5af668d6b2&lt;\/uuid>\n            &lt;name>Custom&lt;\/name>\n        &lt;\/template_group>\n    &lt;\/template_groups>\n    &lt;templates>\n        &lt;template>\n            &lt;uuid>b276b2cddd764da68d1e8fba21a996c1&lt;\/uuid>\n            &lt;template>CustomMikrotikTemplate&lt;\/template>\n            &lt;name>CustomMikrotikTemplate&lt;\/name>\n            &lt;groups>\n                &lt;group>\n                    &lt;name>Custom&lt;\/name>\n                &lt;\/group>\n            &lt;\/groups>\n            &lt;items>\n                &lt;item>\n                    &lt;uuid>b8b3066827cd47968e2d47efc9afce61&lt;\/uuid>\n                    &lt;name>isNewFirmware&lt;\/name>\n                    &lt;type>EXTERNAL&lt;\/type>\n                    &lt;key>MikrotikUpdateZabbix.py&#91;&amp;quot;{HOST.IP}&amp;quot;,&amp;quot;\/etc\/zabbix\/ssh-keys\/id_ed25519&amp;quot;]&lt;\/key>\n                    &lt;delay>2h&lt;\/delay>\n                    &lt;triggers>\n                        &lt;trigger>\n                            &lt;uuid>fea2755ef4084a6aa2e544e59fb6f239&lt;\/uuid>\n                            &lt;expression>last(\/CustomMikrotikTemplate\/MikrotikUpdateZabbix.py&#91;&amp;quot;{HOST.IP}&amp;quot;,&amp;quot;\/etc\/zabbix-ssh-keys\/id_ed25519&amp;quot;])=1&lt;\/expression>\n                            &lt;name>isNewFirmware on Mikrotik {HOST.NAME}&lt;\/name>\n                            &lt;priority>HIGH&lt;\/priority>\n                        &lt;\/trigger>\n                    &lt;\/triggers>\n                &lt;\/item>\n            &lt;\/items>\n        &lt;\/template>\n    &lt;\/templates>\n&lt;\/zabbix_export>\n<\/code><\/pre>\n\n\n\n<p>W moim przypadku klucz SSH dla zabbixa jest w \/etc\/zabbix-ssh-keys\/ i jest to klucz id_ed25519 ale ka\u017cdy mo\u017c\u0119 mie\u0107 inn\u0105&nbsp;\u015bcie\u017ck\u0119 dlatego te\u017c&nbsp;nale\u017cy zmieni\u0107&nbsp;na odpowiedni\u0105, pami\u0119taj\u0105c o tym, \u017ce user zabbix musi umie\u0107 si\u0119 tam dosta\u0107.<\/p>\n\n\n\n<p>p\u00f3\u017aniej nale\u017cy po prostu doda\u0107 template do naszego hosta od mikrotika i gotowe. Mo\u017cna cieszy\u0107 si\u0119 monitorowan\u0105 wersj\u0105 oprogramowania w mikrotiku i czy czasami nie ma nowej, a jak jest nowa to dostaniemy odpowiednie powiadomienie z zabbixa .<\/p>\n\n\n\n<p>Dzi\u0119kuj\u0119 za uwag\u0119, komentarze s\u0105&nbsp;dla mnie bardzo cenne, tak\u017ce jak macie jak\u0105\u015b uwag\u0119, prosz\u0119&nbsp;o komentarz. Postaram si\u0119&nbsp;pom\u00f3c.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Niestety, nie da si\u0119&nbsp;mie\u0107 bezpiecznego (ka\u017cda aktualizacja MO\u017bE zawiera\u0107 poprawki bezpiecze\u0144stwa) systemu\/sieci bez monitorowania czy nie ma jakiej\u015b aktualizacji oprogramowania w naszym sprz\u0119cie &#8211; w tym przypadku w mikrotiku.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[45],"tags":[],"class_list":["post-1077","post","type-post","status-publish","format-standard","hentry","category-mikrotik"],"_links":{"self":[{"href":"https:\/\/www.linuxsystems.ovh\/index.php?rest_route=\/wp\/v2\/posts\/1077","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxsystems.ovh\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linuxsystems.ovh\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.linuxsystems.ovh\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxsystems.ovh\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1077"}],"version-history":[{"count":6,"href":"https:\/\/www.linuxsystems.ovh\/index.php?rest_route=\/wp\/v2\/posts\/1077\/revisions"}],"predecessor-version":[{"id":1201,"href":"https:\/\/www.linuxsystems.ovh\/index.php?rest_route=\/wp\/v2\/posts\/1077\/revisions\/1201"}],"wp:attachment":[{"href":"https:\/\/www.linuxsystems.ovh\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxsystems.ovh\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1077"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxsystems.ovh\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}