Skip to content
Snippets Groups Projects
Commit a41da22c authored by Robin Sonnabend's avatar Robin Sonnabend
Browse files

Use apt to query the installed zabbix version

parent 13c147f3
No related branches found
No related tags found
No related merge requests found
...@@ -2,10 +2,30 @@ ...@@ -2,10 +2,30 @@
import urllib.request import urllib.request
import re import re
import subprocess as sp
PATTERN = r'<a\shref="(?P<link>\d\.\d/)">(?P<version>\d\.\d)/</a>\s+(?P<date>\d{2}-[A-Z][a-z]{2}-\d{4} \d{2}:\d{2})\s+-' PATTERN = r'<a\shref="(?P<link>\d\.\d/)">(?P<version>\d\.\d)/</a>\s+(?P<date>\d{2}-[A-Z][a-z]{2}-\d{4} \d{2}:\d{2})\s+-'
PKG_NAME = "zabbix-server-pgsql"
def get_versions():
def parse_apt_version(version_str):
return list(map(int, version_str.split(":")[1].split("-")[0].split(".")))[:2]
def get_installation():
command = ["apt", "show", PKG_NAME]
version = None
source = None
for line in sp.check_output(
command, stderr=sp.PIPE, universal_newlines=True).splitlines():
if line.startswith("Version:"):
version = parse_apt_version(line.split(":", 1)[1])
elif line.startswith("APT-Sources:"):
source = line.split(":", 1)[1].strip()
return version, source
def get_remote_versions():
response = urllib.request.urlopen("https://repo.zabbix.com/zabbix/") response = urllib.request.urlopen("https://repo.zabbix.com/zabbix/")
page_content = response.read().decode("utf-8") page_content = response.read().decode("utf-8")
for match in re.findall(PATTERN, page_content): for match in re.findall(PATTERN, page_content):
...@@ -16,10 +36,11 @@ def get_versions(): ...@@ -16,10 +36,11 @@ def get_versions():
def main(): def main():
import sys current_version, source = get_installation()
current_version = sys.argv[1] if not source.startswith("http://repo.zabbix.com/"):
current_major, current_minor = map(int, current_version.split(".")) return
highest_version, date = sorted(get_versions())[-1] current_major, current_minor = current_version
highest_version, date = sorted(get_remote_versions())[-1]
if (current_major, current_minor) < highest_version: if (current_major, current_minor) < highest_version:
print( print(
"New Zabbix version is available: {} from {}, please upgrade!".format( "New Zabbix version is available: {} from {}, please upgrade!".format(
......
{{60|random(seed=inventory_hostname)}} {{6|random(seed=inventory_hostname)}} * * * root /usr/local/sbin/check-update.py {{zabbix_version}} {{60|random(seed=inventory_hostname)}} {{6|random(seed=inventory_hostname)}} * * * root /usr/local/sbin/check-update.py
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment