Überspringen und zu den Hauptinhalten

Erstellung eines Computerinformations-Skriptes für Ihren Help Desk

Gepostet in: Jamf Pro, Enterprise, Bildung

Computerprobleme übers Telefon zu beheben kann ziemlich nervenaufreibend sein. Die Mitarbeiter des Help Desks kennen dies sicher nur allzu gut. Häufig benötigen sie technische Informationen von jemandem, der bereits mit kleinen technischen Dingen überfordert ist und zudem mit anderen Aufgaben komplett ausgelastet ist. Diese Person am Telefon anzuleiten, wie sie eine IP-Adresse findet oder ihre Active Directory Verbindung verifiziert, kann sehr mühsam sein.

Wie kann ein Jamf Pro Admin dies optimieren? Und zwar für alle?

Im Laufe einiger Besuche bei meinem Kunden in einem großen Schulbezirk in Texas habe ich ihnen dabei geholfen, ein Tool zusammenzustellen, um ihren Endbenutzern technische Informationen in einem einfach zu lesenden Fenster anzuzeigen. Entwickelt haben wir es jedoch für ihren Help Desk. Die Mitarbeiter des Help Desks bitten Benutzer häufig, dieses Tool via Self Service zu öffnen und ihnen die Informationen auf dem Bildschirm weiterzuleiten. In weniger als einer Minute kann ein Techniker oft feststellen, dass ein Mac offline ist, mit der falschen WLAN-SSID verbunden ist oder nur neu gestartet werden muss.

Hier sehen Sie, was der Endbenutzer auf seinem Bildschirm sieht.

Verkaufsargument

Warum sollten Sie dies tun?

Trudy ist eine der Personen, die das Skript für den Schulbezirk konzipiert hat. Ich habe sie gefragt, ob sie mir den durch die Verwendung des Skriptes entstehenden Mehrwert verdeutlichen könnte. Sie sagte:

„Benutzer sind bereits mit Self Service vertraut, sodass dieser eine einfach erreichbare Anlaufstelle bietet, um Geräteinformationen zu sammeln. Es ist auch zeitsparend für erfahrene Benutzer, da ihnen alles Benötigte bereitsteht und auf ihre Bedürfnisse zugeschnitten werden kann.“

Als Trudy mit diesen Bemerkungen antwortete, fügte sie zudem hinzu, dass sie das Skript am selben Morgen bereits zweimal verwendet hatte.

Wie Sie beginnen

Das Skript, das ich mit Trudy entwickelt habe, finden Sie auf unserer Jamf Professional Services GitHub Seite. Kopieren oder laden Sie das Computer Information.bash Skript herunter und öffnen Sie dieses in einer Applikation, die Plain Text unterstützt wie z. B. BBEdit von Bare Bones Software oder der Open-Source Code Editor Atom. Wenn möglich, vermeiden Sie TextEdit von Apple. Die standardmäßigen Korrekturfunktionen können das Skript unbrauchbar machen.

Das Skript besteht aus vier Teilen.

Der erste Teil bietet lediglich Informationen über das Skript: wer es geschrieben hat, was es bewirkt und zudem bietet es Instruktionen zu der Verwendung des Skriptes.

Der zweite Teil ist eine lange Liste an Skript-Snippets, die ich ‚Module’ nennen werde. Wir gehen hier gleich näher drauf ein.

Als nächstes folgt der Abschnitt, der letztendlich formatiert und entwirft, was der Endbenutzer auf seinem Bildschirm sehen wird.

Der letzte Teil des Skriptes zeigt dem Endbenutzer alle Informationen in einem Fenster an und beinhaltet einen Button, um bei Wunsch weitere Aktionen auszuführen.

Die Module

Jede einzelne Information, die das Skript sammelt und dem Endbenutzer präsentiert, ist nur ein winziger Teil des Codes. Ein Modul kann zwischen kurzen zwei Zeilen bis hin zu zehn oder mehr Zeilen sein. Es ist gerade lang genug, um einen Teil an Informationen zu sammeln, die wir für wichtig oder nützlich halten.

Es ist kein Problem, sofern Sie mit Skripten nicht vertraut sind. Die Module sind im Skript in gewissen Abständen angeordnet, um sie leicht sichtbar zu machen. Hier ist das Erste, dessen Zweck ist, den Computernamen zu übermitteln.

 # Display computer name
runCommand=$( /usr/sbin/scutil --get ComputerName )
computerName="Computer Name: $runCommand"

Die erste Zeile mit dem Hashtag (#) am Anfang bewirkt nichts. Es ist nur eine Beschreibung. Die zweite und dritte Zeile wiederum bewirken Wunder.

Öffnen Sie die Terminal Applikation, die Sie im Directory unter /Applications/Utilities finden. Kopieren Sie die zweite Zeile, fügen Sie diese im Terminal ein und klicken Sie auf Return. Führen Sie den gleichen Schritt für die dritte Zeile durch.

Anschließend lassen Sie folgendes laufen:

 echo "$computerName"

Mehr ist es nicht. Es gibt anschließend aus:

 Computer Name: MooseBook Pro

Das ist die erste Information, die wir im Computerinformations-Fenster sehen. Jede weitere Zeile an Informationen wird auf ähnliche Weise gesammelt - jeweils ein Modul nach dem anderen. Jede Information wird in einer Variablen wie computerName gespeichert. (Variablennamen sollten beschreiben, welche Art von Informationen sie enthalten.) Wir werden diese Variablen als nächstes verwenden.

Informationen anzeigen

Gegen Ende des Skriptes kommt dieser Abschnitt. Vergleichen Sie ihn mit dem obigen Bild des Fensters. Sieht es ähnlich aus?

 ## Format information #####
displayInfo="----------------------------------------------
GENERAL

$computerName
$serialNumber
$upTime
----------------------------------------------
NETWORK

$activeServices
$SSID
$SSH
$timeInfo
$timeServer
----------------------------------------------
ACTIVE DIRECTORY

$AD
$testAD
----------------------------------------------
HARDWARE/SOFTWARE

$diskSpace
$operatingSystem
$batteryCycleCount
----------------------------------------------"

Hier formatieren wir die Informationen, die wir sammeln möchten. Wir haben einige lange Reihen an Bindestrichen hinzugefügt, um eine visuelle Abgrenzung zu generieren, gefolgt von Abschnittüberschriften (GENERAL, NETWORK, ACTIVE DIRECTORY und HARDWARE / SOFTWARE), um Inhalte logisch voneinander in einfach zu lesende Bündel an Informationen zu trennen.

Um jedes einzelne Modul anzuzeigen, fügen Sie zu Beginn des Variablennamens ein $ hinzu und sortieren Sie es in einer für Sie sinnvollen Reihenfolge.

Remote Support

Der restliche Teil des Skriptes übernimmt die oben angegebenen Informationen und zeigt sie dem Endbenutzer an. Behalten Sie bitte im Hinterkopf, dass in dem Fenster auch der Button Enable Remote Support angezeigt wird. Dies kann auch angepasst werden.

Ich habe drei Beispiele für Aktionen hinzugefügt, die mit einem Klick auf den Button ausgeführt werden können. Das erste Beispiel zeigt einen Befehl, der TeamViewer öffnet, eine beliebte Fernsteuerungsanwendung. Im zweiten Beispiel wird eine Richtlinie von Jamf Pro ausgeführt. Und im dritten Beispiel werden die von uns generierten Computerinformationen genommen und eine neue E-Mail-Nachricht an den Help Desk erstellt. Schauen Sie sich den folgenden Abschnitt des Skriptes genauer an:

 # open a remote support application
# /usr/bin/open -a "/Applications/TeamViewer.app"

# run a policy to enable remote support
# /usr/local/bin/jamf policy -event EnableRemoteSupport 

# email computer information to help desk
/usr/bin/open "mailto:support@talkingmoose.pvt?subject=Computer Information ($serialNumber)&body=$displayInfo"

Die erste Zeile dieser Gruppen ist lediglich eine Beschreibung dessen, was der darunter stehende Befehl ausführt. Die zweite Zeile jeder Gruppe ist der tatsächliche Befehl, der die Arbeit erledigt. (Hinweis: der letzte Befehl kann in die nächste Zeile verschoben werden, es handelt sich jedoch trotzdem nur um eine Zeile.)

Die ersten beiden Befehle beinhalten direkt am Anfang Hashtags (#), da wir nicht möchten, dass sie ausgeführt werden. Der dritte Befehl, der eine E-Mail versendet, ist gerade aktiviert. Um einen der anderen beiden Befehle zu aktivieren, entfernen Sie die Hashtags zu Beginn der Befehle und fügen gleichzeitig ein Hashtag zu Beginn des Befehls zum Versenden der E-Mail (hier in der letzten Zeile) hinzu, um diesen zu deaktivieren. Oder Sie entfernen alle Befehle und fügen Ihre eigenen hinzu, um andere Aufgaben auszuführen.

Zu Self Service hinzufügen

Sobald Sie das Skript angepasst haben, fügen Sie es zu einem neuen Skript in Jamf Pro unter Settings > Computer Information > Scripts ein. Benennen Sie das Skript zum Beispiel mit ‘Computerinformation’ und speichern Sie es.

Anschließend wählen Sie Computers > Policies aus und erstellen eine neue Richtlinie. Benennen Sie es mit etwas Ähnlichem wie ‚Computerinformation’ und fügen Sie es zum Skript ‚Computerinformation’ hinzu. Stellen Sie sicher, dass die Frequenz der Richtlinie auf ‚Ongoing’ eingestellt ist, um Endbenutzern zu ermöglichen, das Skript mehrfach durchzuführen.

Aktivieren Sie die Richtlinie für Self Service. Möglichweise möchten Sie den Button ‚Installieren’ zu ‚Ausführen’ oder ‚Informationen’ ändern und ein Icon wie dieses hinzufügen: “/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/ToolbarInfo.icns”. (Vergessen Sie nicht, dass Sie die Vorschauanwendung nutzen können, um es vor dem Hochladen in die Richtlinie in eine PNG-Grafikdatei zu konvertieren.)

Ich benötige Hilfe mit einem Modul

Nicht jeder weiß, wie man Skripte schreibt. Der beste Weg, um es zu lernen, ist Module zu erstellen. Diese ähneln sehr dem Erstellen von Erweiterungsattributen, die Bruchstücke von Informationen von jedem Computer sammeln und zu den Computeraufzeichnungen in Jamf Pro hinzufügen. Suchen Sie unter Settings > Computer Management > Extension Attributes > New Form Template Button nach Codefragmenten, um Ihre eigenen Module zu erstellen. Sie finden fast 200 Posten, um loszulegen.

Vergessen Sie nicht, auch die Jamf Nation Community zu durchsuchen. Der Diskussionsbereich beinhaltet wertvolle Beiträge von Benutzern. Zudem habe ich eine Diskussion zu dem Thema Module für Computerinformationen für all diejenigen erstellt, die Fragen haben, oder ihre Erfahrungen mit der Erstellung von Modulen für ihre Computerinformations-Fenster teilen möchten.

Während Sie sich das Schreiben von Skripten beibringen, können Sie sich folgender Herausforderung stellen: lernen Sie, wie Sie etwas aus macOS Finder entnehmen und anschließend dasselbe in einem Befehl im Terminal umsetzen. Allgemein ist das Schreiben von Skripten nichts anderes, als einen Befehl nach dem anderen auszuführen – genau wie dieses Computerinformations-Skript.

Sofern Sie noch kein Jamf Kunde sind, fordern Sie gerne eine kostenlose Testversion an, um sich selbst von Jamf Pro zu überzeugen.