diff --git a/zabbix-repo/files/check-update.py b/zabbix-repo/files/check-update.py index 8fdccd93e0ab3cbf24429bf06326ce556d4372c9..fdfdff29a09bc63f1b75d68622779b496f8eea82 100644 --- a/zabbix-repo/files/check-update.py +++ b/zabbix-repo/files/check-update.py @@ -2,10 +2,30 @@ import urllib.request 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+-' +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/") page_content = response.read().decode("utf-8") for match in re.findall(PATTERN, page_content): @@ -16,10 +36,11 @@ def get_versions(): def main(): - import sys - current_version = sys.argv[1] - current_major, current_minor = map(int, current_version.split(".")) - highest_version, date = sorted(get_versions())[-1] + current_version, source = get_installation() + if not source.startswith("http://repo.zabbix.com/"): + return + current_major, current_minor = current_version + highest_version, date = sorted(get_remote_versions())[-1] if (current_major, current_minor) < highest_version: print( "New Zabbix version is available: {} from {}, please upgrade!".format( diff --git a/zabbix-repo/templates/crontab.j2 b/zabbix-repo/templates/crontab.j2 index 3e846570f20b2248f2a71fc6892acab4701ca425..a6e534fe3198a31b055aa5ad274781486a237be1 100644 --- a/zabbix-repo/templates/crontab.j2 +++ b/zabbix-repo/templates/crontab.j2 @@ -1 +1 @@ -{{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