Release-Aktualisierungen - bash


#1

Hallo.
Sorry, ganz blöde Frage.

Mit welchen Befehlen kann ich mir auf der Konsole die Release Stände anzeigen lassen?

  • vorhandener Stand (z. B. 4.2-4-errata418)
  • verfügbarer Stand (z. B. 4.3-1-errataXYZ)

Nachtrag:
Geht evtl. auch die Anzahl der Paket-Aktualisierungen? Oder einfach der Hinweis, dass es welche gibt?

Ich habe mir Zabbix eingerichtet und möchte diese Infos auslesen.

Vielen Dank, Lars


#2

Hallo Lars,

Ich benutze Nagios zur Überwachung. Hier funktioniert das mit den Standartpluggin “check_apt”.
So etwas gibt es bestimmt auch für Zabbix.

Gruß,
Thomas


#3

Huhu,

Der steht in diversen UCR-Variablen; siehe Ausgabe von ucr search --brief '^version/'

Der ist leider nicht so einfach zu ermitteln. Das, was @thhoe vorgeschlagen hat…

…funktioniert nur für Errata-Updates, nicht aber für neue Major-/Minor-Releases/Patchlevel. Der Grund ist, dass für jedes Major-/Minor-Release/Patchlevel neue APT-Quellen hinzukommen. Oder anders ausgedrückt: wenn man aktuell (fiktiv) 4.2-3 Errata 123 laufen hat, so kann man alle Errata-Updates für 4.2-3 direkt über APT herausbekommen (vorher ein apt-get update), nicht aber, dass es 4.2-4 oder gar 4.3-0 gibt.

Um herauszufinden, ob es neue Majors/Minors/Patchlevel gibt, kann man das machen, was der Univention-Updater ebenfalls macht: unter der URL https://updates.software-univention.de/ nachschauen, welche Verzeichnisse es gibt. Wenn ich den Code (def get_next_version in /usr/share/pyshared/univention/updater/tools.py) richtig lese, so nimmt der Updater die aktuelle Version als Basis (z.B. 4.2-4), zählt zuerst das Patchlevel hoch (also 4.2-5) und prüft, ob es dafür das Komponentenverzeichnis https://updates.software-univention.de/<major>.<minor>/maintained/<major>.<minor>-<patchlevel>/ (effektiv somit https://updates.software-univention.de/4.2/maintained/4.2-5/) gibt.

Das gleiche wird dann auch mit hochgezählter Minor-Release und Patchlevel 0 (also 4.3-0) sowie mit hochgezähltem Major mit Minor & Patchlevel = 0 (5.0-0) gemacht.

Das ganze berücksichtigt noch nicht die Apps, die installiert sein können. Dafür müsste man die entsprechenden App-Center-Katalogdateien herunterladen und auswerten. Glücklicherweise sind das JSON-Dateien und damit einfach zu handhaben. Die URL für die Katalogdatei lautet: https://appcenter.software-univention.de/meta-inf/<major>.<minor>/index.json.gz

Was man etwas einfacher abfragen kann, ist die Frage, ob es generell Updates gibt. Das liegt daran, dass der Updater regelmäßig im Prüfmodus ausgeführt wird und das Ergebnis in der UCR-Variable update/available speichert.

Gruß
mosu


#4

Hallo,

Das ist mir noch gar nicht aufgefallen. Wieder was gelernt.

Updates mache ich meist an der Console, das hat mich auf diese Idee gebracht:

:~# /usr/sbin/univention-upgrade --check

Starting univention-upgrade. Current UCS version is 4.3-1 errata202

Checking for package updates:                           none
Checking for app updates:                               none
Checking for release updates:                           none
No update available.

oder ein anderer Server:

:~# /usr/sbin/univention-upgrade --check

Starting univention-upgrade. Current UCS version is 4.2-4 errata490

Checking for package updates:                           none
Checking for app updates:                               none
Checking for release updates:                          The update to UCS 4.3 is blocked because the component 'benno-mailarchiv_20170619120638' is marked as required.
 none
No update available.

Damit sollte sich auf jeden Fall etwas mchen lassen.

Gruß,
Thomas


#5

So rein aus dem Gedächtnis sollte sich das auch univention-app info auslesen lassen.


#6

Huhu,

Definitiv, ja, daran hatte ich nicht gedacht.

Mein Post sollte eher Möglichkeiten aufzeigen, wie man herausfinden kann, welche Updates es alle gibt (was für mich am ehesten die Antwort auf die Frage des OPs ist, “verfügbarer Stand”), und nicht nur die Frage, ob es generell welche gibt. Leider liefert univention-app info da auch nur die halbe Miete, denn es zeigt nur an, welche neuen App-Versionen es für das gerade installierte UCS-Release gibt. Für neuere UCR-Releases kann es durchaus noch neuere App-Releases geben.

Das Thema ist schlicht vielschichtig :slight_smile:

@Quickly71 UCS bietet übrigens auch die Möglichkeit, Updates automatisch installieren zu lassen. Man kann über Richtlinien feingranular einstellen, ob man nur Erratalevel-Updates, Patchlevel+Erratalevel oder sogar Minor-Releases+Patchlevel+Erratalevel installieren möchte. Die Möglichkeiten habe ich in folgendem Post ausführlich erläutert (auf Englisch):

Gruß
mosu


#7

Hallo,

Das kann ich nur bestätigen. Auf einer Testmaschie hatte ich gerade folgendes beobachdet:

  • Anmeldung an der UMC -> Meldung: Es steht ein Update zur Verfügung.
  • Wechseln zum Modul Software-Aktualisierung -> alles aktuell
  • Anmeldung über SSh
:~# univention-upgrade --check

Starting univention-upgrade. Current UCS version is 4.3-1 errata202

Checking for package updates:                           none
Checking for app updates:                               found
Please rerun command without --check argument to install.
:~# univention-upgrade

Starting univention-upgrade. Current UCS version is 4.3-1 errata202

Checking for local repository:                          none
Checking for package updates:                           none
Checking for app updates:                               found

The following apps can be upgraded:

Benno MailArchiv: The underlying container can be upgraded

Starting app upgrade
Do you want to upgrade Benno MailArchiv [Y|n]? y

Dummerweise habe ich das Update schon installiert, die Ausgabe von check_app währe schon interessant gewesen.

Gruß,
Thomas


#8

Nachtrag:

5:~# /usr/lib/nagios/plugins/check_apt
APT OK: 0 packages available for upgrade (0 critical updates). |available_upgrades=0;;;0 critical_updates=0;;;0
:~# univention-app info
UCS: 4.3-1 errata202
Installed: benno-mailarchiv=2.4.6 dhcp-server=12.0 radius=5.0
Upgradable: benno-mailarchiv

Für mich ist die Ausgabe von univention-upgrade --check ausreichend. Wenn jemand dafür ein Nagios-Check hat würde der mich sehr interesieren. Mir fehlt im Moment die Zeit einen zu entwickeln.

Gruß,

Thomas


#9

Die Diskrepanz hier zwischen check_apt und univention-app info passt genau, wie ich oben erläutert habe. Hier kommt erschwerend hinzu, dass diverse Apps gar nicht mehr als Debian-Pakete paketiert und in APT-Repositories verfügbar sind, sondern als Docker-Container daherkommen. Daher werden Updates für diese Art von Apps rein über den JSON-Meta-Index und die darüber referenzierten weiteren Meta-Info-Dateien bekanntgegeben. check_apt ist da dann komplett außen vor.


#10

Hallo zusammen,

ich habe mir ein Script gebastelt:

#!/bin/bash
# Nagios Plugin Bash Script - check-univention-update.sh
# It only works on local Univention UCS servers.
# The script checks if a reboot is required and if an update is available.
#
# Autor: info@thhoe.de

#set -x

RC_OK=0
RC_WARN=1
RC_CRIT=2
RC_UNKNOWN=3
RC=0

usage()
{
    echo ""
	echo "	The script only works on local Univention UCS servers. "
    echo "	It checks if a reboot is required and if an update is available."
    echo ""
}

if [ $1 ] 
then 
usage 
exit $RC_UNKNOWN
fi

BOOT=$(ucr get update/reboot/required)
RC=$?

if [ $RC -gt 0 ]
then 
	echo "UNKNOWN: No Univention server"
	exit $RC_UNKNOWN
fi

INFO=$(univention-app info | sed 's/UCS\:/UCS\ version\ is/' | sed '/UCS*/!d')

if [ -z $BOOT ]
then
	RC=$RC_UNKNOWN
	MSG="UNKNOWN Response"

	UPDATE=$(univention-upgrade --check | awk '$5 ~ /found/ { print $3  }')
	case $UPDATE in
		package)
			MSG=", package update available"
			RC=$RC_CRIT
			;;
		release)
			MSG=", release update available"
			RC=$RC_WARN
			;;
		app)
			APP=$(univention-app info | sed '/Upg*/!d' | sed 's/Upgradable\:\ //')
			MSG=", APP "$APP" upgradable"
			RC=$RC_WARN
			;;
		*)
			MSG=", no update available"
			RC=$RC_OK
			;;
	esac
else
	MSG=", reboot required"
	RC=$RC_CRIT
fi

case $RC in
	0)
		RC_TEXT="OK: "
		;;
	1)
		RC_TEXT="WARNING: "
		;;
	2)
		RC_TEXT="CRITICAL: "
		;;
	*)
		RC_TEXT="UNKNOWN: "
		;;
	esac

echo $RC_TEXT$INFO$MSG
exit $RC

Aufruf erfolgt in nrpe_local.cfg

command[UNIVENTION_UPDATE]=/usr/bin/sudo /usr/local/bin/check-univention-update.sh 

Aktuellelle Ausgabe meines Mailservers:

WARNING: UCS version is 4.3-3 errata419, APP benno-mailarchiv upgradable 

mit passenden Status in Nagios.

Das ich “sudo” brauche stört mich noch ein bisschen, aber ohne funktioniert es nicht.
Vielleicht kann jemandes gebrauchen.

Thomas