Commit a41da22c authored by Robin Sonnabend's avatar Robin Sonnabend
Browse files

Use apt to query the installed zabbix version

parent 13c147f3
......@@ -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("")
page_content ="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(""):
current_major, current_minor = current_version
highest_version, date = sorted(get_remote_versions())[-1]
if (current_major, current_minor) < highest_version:
"New Zabbix version is available: {} from {}, please upgrade!".format(
{{60|random(seed=inventory_hostname)}} {{6|random(seed=inventory_hostname)}} * * * root /usr/local/sbin/ {{zabbix_version}}
{{60|random(seed=inventory_hostname)}} {{6|random(seed=inventory_hostname)}} * * * root /usr/local/sbin/
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment