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
Branches
No related tags found
No related merge requests found
......@@ -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(
......
{{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