Skip to content

Vogel-Solution

Sag nicht nein, nur wenn du die Lösung nicht kennst. Probier es doch mal aus.

  • Startseite
  • Jamf
  • Toggle search form

macOS Updates

Posted on Januar 29, 2024Januar 29, 2024 By Andreas Vogel Keine Kommentare zu macOS Updates

macOS Updates mit MDM und DDM

Die Handhabung von macOS-Softwareupdates gestaltet sich nicht immer einfach. Benutzer müssen einerseits darüber informiert werden, dass ein Update verfügbar ist und andererseits sollte die Installation nach einer angemessenen Zeit erfolgen. Idealerweise ohne die Notwendigkeit eines Administrator-Interventionshandelns.

Der optimale Fall sieht wie folgt aus:

  • Der Benutzer wird sofort über die Verfügbarkeit eines Updates informiert.
  • Der Benutzer hat die Möglichkeit zu entscheiden, ob er das Update sofort oder zu einem späteren Zeitpunkt installieren möchte.
  • Es gibt eine maximale Anzahl von Aufschüben, bevor das macOS-Update zwangsweise installiert wird.
  • Bei jedem neuen verfügbaren Update wird die Anzahl der maximalen Aufschübe zurückgesetzt.
  • Der Benutzer erhält eine Meldung mit Informationen über das verfügbare macOS-Update sowie die verbleibende Anzahl der Aufschübe.

Um diese Anforderungen zu erfüllen, habe ich ein Skript entwickelt, dass sowohl DDM- als auch MDM-Befehle verwendet, um ein macOS ohne Eingabe des Benutzerpassworts zu ermöglichen.

Das Skript nutzt den Jamf Pro als MDM-Server. Bitte beachte, dass die aktuelle Jamf Pro API sich noch in der Beta-Phase befindet.

Für die Umsetzung dieser Anforderungen wird ein Jamf Pro API-Benutzer benötigt, der spezifische Berechtigungen besitzt. 

Die neueste Version des Skriptes steht zum Download auf GitHub bereit. Das Skript kann von folgendem Link herunterladen werden: GitHub – Update_macOS_DDM

Folgende Berechtigungen sind erforderlich:

  • Send Mobile Device Remote Command to Download and Install iOS Update
  • Read Computers
  • Send Computer Remote Command to Download and Install OS X Update
  • Read Managed Software Updates
  • Create Managed Software Updates

Für die Erstellung eines neuen API-Rolls und Clients verwende bitte die aktuelle Jamf Pro Dokumentation unter: Jamf Pro Dokumentation – API Roles and Clients.

Zusätzlich die detaillierte Beschreibung zu den benötigten Berechtigungen unter: Jamf Pro API Privileges and Deprecations.

Die Zugangsdaten für den erstellten API-Benutzer werden dem Skript über Jamf Pro-Variablen übergeben. Dadurch werden die Zugangsdaten nicht auf dem Client gespeichert und ausschließlich während der Ausführung des Skripts verwendet.

Das Skript

Das Prinzip des Skriptes besteht darin, dass es einmal täglich durch die Jamf Pro Policy ausgeführt wird und die macOS-Standardbefehle verwendet, um herauszufinden, ob ein macOS-Softwareupdate bereitsteht. Hierzu wird der Befehl „softwareupdate -l“ ausgeführt. Wenn das Tool ein Softwareupdate findet, wird zunächst ermittelt, welche API in Jamf Pro aktuell aktiviert ist.

DDM

Stellt das Skript fest, dass:

  • die neue API verfügbar ist,
  • das macOS mindestens macOS 14 oder älter ist,
  • und ein Update bereitsteht,

so liest das Skript zunächst aus der lokal angelegten Plist die Werte aus, ob ein Datum festgelegt ist, bis wann das Update spätestens installiert werden muss. Wird kein Datum in der Plist gefunden, ermittelt das Skript das Datum, indem es das aktuelle Datum um die maximale Anzahl der Aufschübe verlängert. Diese maximale Anzahl wird über das Konfigurationsprofil an alle Geräte verteilt und gesetzt. Das ermittelte Datum wird über die API gesetzt, und das Skript wartet anschließend 300 Sekunden. Nach Ablauf der Wartezeit prüft das Skript, ob der API-Call erfolgreich war und der Plan angewandt wurde. Wenn der Plan erfolgreich gesetzt wurde, speichert das Skript die Plan-ID sowie das Datum in der Plist auf dem Client ab. Sobald die Daten erfolgreich gesetzt wurden, erhält der Benutzer die Information, dass ein macOS-Update verfügbar ist, inklusive folgender Informationen:

  • Welches macOS aktuell installiert ist
  • Welches macOS als Update bereit steht
  • Wann das Update (mit Datum und Uhrzeit) spätestens automatisch installiert wird
  • Tage bis zu dem Datum

Nur wenn der Plan erfolgreich gesetzt wurde, erhält der Benutzer eine Benachrichtigung.

Hier kann der Benutzer nun eine Entscheidung treffen, ob er das Update sofort einspielen oder um einen Tag verschieben möchte.

Aufgrund dessen, dass der Befehl für das Update über DDM erfolgt, wird ebenfalls unter „Systemeinstellungen -> Softwareupdate“ das Datum hinterlegt, an dem das Gerät zwangsweise aktualisiert wird.

Zusätzlich erhält der Benutzer täglich über die macOS Mitteilungszentrale Informationen darüber, wann das Gerät aktualisiert wird, inklusive Datum und Uhrzeit.

Konnte das macOS-Update nicht installiert werden, beispielsweise weil das Gerät zum geplanten Zeitpunkt ausgeschaltet war, erhält der Benutzer bei der nächsten Gelegenheit die Meldung, dass das Update überfällig ist und dass das macOS in einer Stunde zwangsweise aktualisiert wird.

MDM

Stellt das Skript fest, dass:

  • entweder die alte API aktiviert ist,
  • oder macOS jünger als macOS 14 ist (macOS 12 oder 13),
  • und ein Update bereitsteht,

erhält der Benutzer sofort einen Dialog mit folgenden Informationen:

  • Welches macOS aktuell installiert ist
  • Welches macOS als Update bereit steht
  • Anzahl der verbleibenden Aufschübe.

Das Skript prüft zunächst, ob noch Aufschübe verfügbar sind. Wenn keine Aufschübe verfügbar sind, wird dieser um eins reduziert. Der Benutzer hat hier die Möglichkeit, eine Auswahl zu treffen. Sollte der Benutzer innerhalb der Zeit keine Auswahl treffen, wird angenommen, dass der Benutzer aktuell nicht am Platz ist oder keine Auswahl treffen möchte, und der Dialog wird automatisch geschlossen. Sind keine Aufschübe mehr verfügbar, kann der Benutzer keine Auswahl mehr treffen, daher wird der Dialog ohne Auswahl angezeigt. Der Benutzer kann hier nur auf „Fortfahren“ klicken. Wenn nach Ablauf der Zeit keine Auswahl getroffen wird, wird ebenfalls der gleiche Mechanismus angestoßen, als hätte der Benutzer auf „Fortfahren“ geklickt.

Es spielt keine Rolle, in welchem Fenster der Benutzer auf „Fortfahren“ klickt, das Vorgehen ist immer gleich:

Es wird zunächst geprüft, ob das Gerät an das Stromnetz angeschlossen ist. Wenn das Gerät nicht mit dem Strom verbunden ist, wird ermittelt, wie voll der Akku ist. Wenn der Akku zu mehr als 50 % geladen ist, ist die Prüfung bestanden. Ist die Ladung gering, wird der Benutzer aufgefordert, das Gerät mit dem Netzadapter zu verbinden.

Ist das Gerät innerhalb der Wartezeit mit dem Stromnetz verbunden, ist die Prüfung bestanden; andernfalls erhält der Benutzer eine Fehlermeldung. Das Skript startet dann am nächsten Tag erneut.

Wenn die Prüfung bestanden ist, wird über die API der Befehl gesendet, dass das Gerät das aktuelle macOS-Update herunterladen und neu starten soll.

Wenn der Befehl erfolgreich durchgelaufen ist, erhält der Benutzer eine Bestätigung; anderenfalls erhält der Benutzer eine Fehlermeldung.

anderenfalls erhält der Benutzer eine Fehlermeldung.

Skript-Steuerung über Profil

Das Skript ist so konzipiert, dass keine Anpassungen im Skript selbst notwendig sind, es sei denn, es müssen Änderungen an der Funktionalität des Skriptes vorgenommen werden. Die Einstellungen für das Skript sowie die angezeigten Fenster, einschließlich

  • der Größe,
  • der Schriftgröße

sowie alle Benutzertexte werden ebenfalls über das Konfigurationsprofil festgelegt und übermittelt.

Über das Konfigurationsprofil werden außerdem folgende Parameter gesteuert:

  • Maximale Anzahl der Aufschübe
  • Speicherort der Logs auf dem Gerät
  • Speicherort der lokalen Plist-Datei (in der das Datum und die Plan-ID für das Update gespeichert werden)

Darüber hinaus werden die Timer-Werte festgelegt:

  • Zeit, bis die einzelnen Buttons wieder aktiviert werden
  • Wartezeit, bis das Fenster automatisch geschlossen wird
  • Wartezeit auf Strom

Die aktuelle Version der JSON-Datei für das Konfigurationsprofil kann unter folgendem Link heruntergeladen werden: Link zur JSON-Datei.

Für die Implementierung der JSON-Datei in das Konfigurationsprofil finden Sie weitere Details in der aktuellen Dokumentation auf der GitHub-Wiki-Seite: GitHub Wiki – Implementation Details.

Jamf

Beitrags-Navigation

Previous Post: Device Compliance für macOS in Jamf Pro

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Andreas Vogel

Apple Senior Consultant

Direkt zu LinkedIn

Wer noch nie einen Misserfolg hatte, hat noch nie etwas Neues versucht."

Albert Einstein

Recent Posts

  • macOS Updates
  • Device Compliance für macOS in Jamf Pro

Recent Comments

Es sind keine Kommentare vorhanden.

Archives

  • Januar 2024
  • Juni 2023

Categories

  • Jamf

Rechtliches

Impressum

Datenschutzerklärung

Copyright © 2025 Vogel-Solution.

Powered by PressBook Dark WordPress theme