Exportieren von NinjaOne-Protokolldateien auf macOS mit einem Bash-Skript

Effizientes Protokollmanagement ist entscheidend für IT-Experten und Managed Service Provider (MSPs). Ob bei der Fehlerbehebung oder zur Einhaltung von Compliance-Vorgaben – der Zugriff auf relevante Protokolle kann entscheidend sein. Das bereitgestellte Bash-Skript vereinfacht den Export von Ninja-Protokolldateien auf macOS und ist somit ein wertvolles Tool für IT-Umgebungen. Dieser Beitrag erläutert das Skript, seine Anwendungsfälle und Best Practices für den Einsatz. **Hintergrund zu Ninja-Protokollmanagement

NinjaOne ist eine umfassende IT-Management-Lösung, deren Agenten Protokolle erstellen, die wichtige Einblicke in Systemleistung, Richtlinien und Konfigurationen bieten können. Für macOS-Nutzer kann das manuelle Auffinden und Exportieren dieser Protokolle mühsam sein.** Dieses Skript automatisiert den Prozess und stellt sicher, dass die Protokolle in einem konsistenten Format in ein angegebenes Verzeichnis exportiert werden.

IT-Fachleute und MSPs benötigen diese Protokolle häufig für Diagnosen, Audits oder Compliance-Zwecke. Durch die Automatisierung des Exports von Protokollen verringert das Skript den manuellen Aufwand und minimiert das Risiko menschlicher Fehler.

Das Skript zur Ermittlung der installierten Antiviren-Software

#!/usr/bin/env bash

# Description: Exports the Ninja Support Logs to the specified directory for Mac.
#   By using this script, you indicate your acceptance of the following legal terms as well as our Terms of Use at https://www.ninjaone.com/terms-of-use.
#   Ownership Rights: NinjaOne owns and will continue to own all right, title, and interest in and to the script (including the copyright). NinjaOne is giving you a limited license to use the script in accordance with these legal terms. 
#   Use Limitation: You may only use the script for your legitimate personal or internal business purposes, and you may not share the script with another party. 
#   Republication Prohibition: Under no circumstances are you permitted to re-publish the script in any script library or website belonging to or under the control of any other software provider. 
#   Warranty Disclaimer: The script is provided “as is” and “as available”, without warranty of any kind. NinjaOne makes no promise or guarantee that the script will be free from defects or that it will meet your specific needs or expectations. 
#   Assumption of Risk: Your use of the script is at your own risk. You acknowledge that there are certain inherent risks in using the script, and you understand and assume each of those risks. 
#   Waiver and Release: You will not hold NinjaOne responsible for any adverse or unintended consequences resulting from your use of the script, and you waive any legal or equitable rights or remedies you may have against NinjaOne relating to your use of the script. 
#   EULA: If you are a NinjaOne customer, your use of the script is subject to the End User License Agreement applicable to you (EULA).
#
# Preset Parameter: --destination "/private/tmp"
#   The directory to export the logs to.
#
# Preset Parameter: --help
#   Displays some help text.

# These are all our preset parameter defaults. You can set these = to something if you would prefer the script defaults to a certain parameter value.
_arg_destination="/private/tmp"

# Help text function for when invalid input is encountered
print_help() {
    printf '\n\n%s\n\n' 'Usage: [--destination|-d <arg>] [--createPath|-c] [--help|-h]'
    printf '%s\n' 'Preset Parameter: --destination "/private/tmp/ninjaLogs" --createPath'
    printf '\t%s\n' "Replace the text encased in quotes with the directory to export the logs to."
    printf '\n%s\n' 'Preset Parameter: --help'
    printf '\t%s\n' "Displays this help menu."
}

# Determines whether or not help text is necessary and routes the output to stderr
die() {
    local _ret="${2:-1}"
    echo "$1" >&2
    test "${_PRINT_HELP:-no}" = yes && print_help >&2
    exit "${_ret}"
}

# Grabbing the parameters and parsing through them.
parse_commandline() {
    while test $# -gt 0; do
        _key="$1"
        case "$_key" in
        --destination | -d)
            test $# -lt 2 && die "Missing value for the optional argument '$_key'." 1
            _arg_destination=$2
            shift
            ;;
        --destination=*)
            _arg_destination="${_key##--destination=}"
            ;;
        --createPath | -c)
            _arg_createPath="true"
            ;;
        --help | -h)
            _PRINT_HELP=yes die 0
            ;;
        *)
            _PRINT_HELP=yes die "FATAL ERROR: Got an unexpected argument '$1'" 1
            ;;
        esac
        shift
    done
}

parse_commandline "$@"

# If script form is used override commandline arguments
if [[ -n $destination ]] && [[ "${destination}" != "null" ]]; then
    _arg_destination="$destination"
fi
if [[ -n $createPath ]] && [[ "${createPath}" == "true" ]]; then
    _arg_createPath="true"
fi

# Get the path to the NinjaRMMAgent from the environment variable NINJA_DATA_PATH
_data_path=$(printenv | grep -i NINJA_DATA_PATH | awk -F = '{print $2}')
if [[ -z "${_data_path}" ]]; then
    # If the environment variable NINJA_DATA_PATH is not set, try to find the NinjaRMMAgent in the Applications folder
    _data_path="/Applications/NinjaRMMAgent/programdata"
    if [[ -z "${_data_path}" ]]; then
        echo "[Error] No NinjaRMMAgent found. Please make sure you have the NinjaRMMAgent installed and that it is running."
        exit 1
    fi
fi

# Get the current date
cur_date="$(date +%Y-%m-%d)"

# Trim the trailing slash from the destination path and remove any duplicate slashes from the destination path
dest_path=$(echo "$_arg_destination" | sed 's/\/$//' | sed 's/\/\+/\//g')

if [ -e "${dest_path}" ]; then
    echo "[Info] The destination path (${dest_path}) exists."
else
    echo "[Warn] The destination path (${dest_path}) does not exist."
    if [[ "${_arg_createPath}" == "true" ]]; then
        echo "[Info] Creating the destination path (${dest_path})"
        mkdir -p "${dest_path}"
    else
        echo "[Error] The destination path (${dest_path}) does not exist."
        exit 1
    fi
fi

echo "[Info] Exporting logs to $dest_path/NinjaSupportLogs.zip"

# Collect the logs from the following directories
if zip -r -q "$dest_path/$cur_date-NinjaLogs.zip" "$_data_path/logs" "$_data_path/policy" "$_data_path/jsonoutput" "$_data_path/jsoninput" "$_data_path/patch"; then
    echo "[Info] Logs exported to $dest_path/$cur_date-NinjaLogs.zip"
else
    echo "[Error] Failed to export logs to $dest_path/$cur_date-NinjaLogs.zip"
    exit 1
fi

 

Sparen Sie Zeit mit über 300+ Skripten aus dem NinjaOne Dojo.

Erhalten Sie noch heute Zugang.

Schritt-für-Schritt-Erklärung des Skripts

Übersicht der Parameter

Das Skript beginnt mit der Definition und Analyse der vom Benutzer bereitgestellten Parameter:

  • -Ziel oder -d: Gibt das Verzeichnis an, in das die Protokolle exportiert werden. Standardmäßig auf /private/tmp.
  • -createPath oder -c: Gibt an, ob das Zielverzeichnis erstellt werden soll, falls es nicht existiert.
  • -help oder -h: Zeigt die Benutzungsanweisungen an.

Hilfe-Funktionalität

Die Funktion `print_help` bietet eine Anleitung für Benutzer, die mit den Parametern des Skripts nicht vertraut sind. Sie erläutert den Zweck jedes Schalters und sorgt so für Klarheit.

Parsen von Befehlszeilenargumenten

Die Funktion `parse_commandline` verarbeitet die eingegebenen Argumente. Sie validiert die erforderlichen Eingaben, überprüft unerwartete Argumente und weist den Variablen des Skripts Werte zu.

Die Auflösung des Ninja-Datenpfads

Das Skript identifiziert den Speicherort der Ninja-Protokolle mit:

  1. Die Umgebungsvariable NINJA_DATA_PATH, falls gesetzt.
  2. Ein Standard-Fallback zu /Applications/NinjaRMMAgent/programdata.

Wenn keiner der beiden Pfade verfügbar ist, wird das Skript mit einer Fehlermeldung beendet, so dass die Benutzer über den fehlenden NinjaOne-Agenten informiert werden.

Vorbereiten des Zielverzeichnisses

Das Skript bereinigt und validiert den Zielpfad. Wenn das Verzeichnis nicht existiert:

  • Es erstellt das Verzeichnis, wenn das –createPath-Flag gesetzt ist.
  • Andernfalls wird das Programm mit einem Fehler beendet.

Protokolle exportieren

Mit dem Dienstprogramm zip sammelt das Skript Protokolle aus vordefinierten Ninja-Verzeichnissen (logs, policy, jsonoutput, jsoninput, patch) und komprimiert sie in eine ZIP-Datei mit Zeitstempel. Dies gewährleistet ein einfaches Auffinden und Organisieren der exportierten Protokolle.

Potenzielle Anwendungsfälle

Hypothetisches Szenario: Behebung von Leistungsproblemen an Endpunkten

Stellen Sie sich vor, ein MSP verwaltet mehrere Endpunkte mit NinjaOne. Ein Kunde meldet langsame Leistung auf einem macOS-Gerät. Anstatt die Protokolle manuell zu durchsuchen, führt der IT-Techniker dieses Skript aus:

  • Exportiert Protokolle in ein vordefiniertes Verzeichnis.
  • Überprüft die komprimierten Protokolle auf Muster oder Fehler.
  • Ermittelt die Grundursache, z. B. eine falsche Richtlinienkonfiguration oder Patching-Probleme.

Die durch das Skript ermöglichte Automatisierung spart Zeit und gewährleistet eine genaue Diagnose.

Vergleiche mit alternativen Methoden

Beim manuellen Protokollexport müssen Sie Verzeichnisse durchsuchen, die relevanten Dateien auswählen und sie komprimieren. Diese Vorgehensweise ist fehleranfällig und zeitaufwändig.

Die Verwendung der NinjaOne-Weboberfläche zum Abrufen von Protokollen ist eine weitere Option, der es jedoch unter macOS an Flexibilität und Automatisierungsmöglichkeiten mangeln kann. Der Befehlszeilenansatz des Skripts bietet Präzision und Wiederholbarkeit und ist daher ideal für IT-Experten, die mit Skripten vertraut sind.

FAQs

Was passiert, wenn das Zielverzeichnis nicht existiert?
Das Skript kann das Verzeichnis erstellen, wenn die Option –createPath verwendet wird. Andernfalls wird das Programm mit einem Fehler beendet.

Kann dieses Skript unter Linux oder Windows ausgeführt werden?
Es wurde zwar für macOS entwickelt, könnte aber auch für Linux angepasst werden. Unter Windows wäre aufgrund der Systemunterschiede ein anderes Skript oder eine andere Vorgehensweise erforderlich.

Welche Protokolle sind in der ZIP-Datei enthalten?
Das Skript sammelt Protokolle aus Verzeichnissen wie logs, policy, jsonoutput, jsoninput und patch.

Auswirkungen auf die IT-Sicherheit

Exportierte Protokolle enthalten sensible Informationen, wie z. B. Konfigurationen und Systemzustände. Ein falscher Umgang mit diesen Dateien kann Schwachstellen aufdecken. IT-Teams sollten strenge Zugangskontrollen durchsetzen und exportierte Protokolle verschlüsseln, wenn sie gespeichert oder übertragen werden.

Durch die Automatisierung von Protokollexporten reduziert das Skript auch die Zeitfenster, in denen Protokolle bei Zwischenfällen nicht zugänglich sind, und erhöht so die betriebliche Ausfallsicherheit.

Empfehlungen für die Verwendung des Skripts

  1. In einer sicheren Umgebung ausführen: Stellen Sie sicher, dass nur befugtes Personal Zugriff auf das Skript und die exportierten Protokolle hat.
  2. Test in Nicht-Produktionssystemen: Validieren Sie das Skript auf nicht kritischen Systemen, bevor Sie es in großem Umfang einsetzen.
  3. Planen Sie regelmäßige Ausfuhren: Integrieren Sie das Skript in einen Taskplaner wie cron für regelmäßige Protokollexporte.

Abschließende Überlegungen

Die Möglichkeit, Ninja-Protokolldateien unter macOS effizient zu exportieren, ist ein großer Vorteil für IT-Experten und MSPs. Dieses Bash-Skript vereinfacht nicht nur den Prozess, sondern gewährleistet auch Konsistenz und Genauigkeit. NinjaOne-Anwender können diese Automatisierung nutzen, um die Fehlerbehebung und die Einhaltung von Vorschriften zu verbessern, was den Wert der Plattform für das IT-Management weiter unterstreicht.

Nächste Schritte

Der Aufbau eines effizienten und effektiven IT-Teams erfordert eine zentralisierte Lösung, die als einheitliches Tool zur Bereitstellung von IT-Dienstleistungen fungiert. NinjaOne ermöglicht es IT-Teams, alle Geräte zu überwachen, zu verwalten, zu sichern und zu unterstützen, unabhängig vom Standort, ohne dass eine komplexe Infrastruktur vor Ort erforderlich ist.

Erfahren Sie mehr über NinjaOne Remote Script Deployment, sehen Sie sich eine Live-Tour an oder starten Sie Ihre kostenlose Testversion unserer NinjaOne Plattform.

Kategorien:

Das könnte Sie auch interessieren

×

Sehen Sie NinjaOne in Aktion!

Mit dem Absenden dieses Formulars akzeptiere ich die Datenschutzerklärung von NinjaOne.

NinjaOne Allgemeine Geschäftsbedingungen für Skripte

Indem Sie unten auf die Schaltfläche “Ich akzeptiere” klicken, erklären Sie Ihr Einverständnis mit den folgenden rechtlichen Bedingungen sowie mit unseren Nutzungsbedingungen:

  • Eigentumsrechte: NinjaOne besitzt und wird weiterhin alle Rechte, Titel und Interessen an dem Skript (einschließlich des Urheberrechts) behalten. NinjaOne gewährt Ihnen eine eingeschränkte Lizenz zur Nutzung des Skripts in Übereinstimmung mit diesen rechtlichen Bedingungen.
  • Einschränkung der Nutzung: Sie dürfen das Skript nur für Ihre legitimen persönlichen oder internen Geschäftszwecke verwenden und es nicht an Dritte weitergeben.
  • Verbot der Wiederveröffentlichung: Sie sind unter keinen Umständen berechtigt, das Skript in einer Skriptbibliothek, die einem anderen Softwareanbieter gehört oder von diesem kontrolliert wird, erneut zu veröffentlichen.
  • Gewährleistungsausschluss: Das Skript wird “wie gesehen” und “wie verfügbar” bereitgestellt, ohne jegliche Garantie. NinjaOne gibt keine Versprechen oder Garantien, dass das Skript frei von Fehlern ist oder dass es Ihre speziellen Bedürfnisse oder Erwartungen erfüllt.
  • Risikoübernahme: Die Verwendung des Skripts erfolgt auf eigene Gefahr. Sie erkennen an, dass die Nutzung des Skripts mit bestimmten Risiken verbunden ist, und Sie verstehen und übernehmen jedes dieser Risiken.
  • Verzicht und Freigabe: Sie machen NinjaOne nicht für nachteilige oder unbeabsichtigte Folgen verantwortlich, die sich aus Ihrer Nutzung des Skripts ergeben, und Sie verzichten auf alle gesetzlichen oder billigkeitsrechtlichen Rechte oder Rechtsmittel, die Sie gegen NinjaOne im Zusammenhang mit Ihrer Nutzung des Skripts haben könnten.
  • EULA: Wenn Sie ein NinjaOne-Kunde sind, unterliegt Ihre Nutzung des Skripts dem für Sie geltenden Endbenutzer-Lizenzvertrag (EULA).