Vous êtes déjà client NinjaOne ? Connectez-vous pour consulter d'autres guides et les dernières nouvelles.

SCRIPTS PERSONNALISÉS : Supprimer TEAMVIEWER (macOS)

Sujet

Cet article explique comment utiliser un script personnalisé pour supprimer TeamViewer de vos terminaux macOS.

Pour les terminaux Microsoft Windows, consultez notre article Scripts personnalisés : supprimer TeamViewer (Windows).

Environnement

NinjaOne Endpoint Management

Description

Si vous devez supprimer des instances de TeamViewer de vos terminaux, le script Supprimer TeamViewer peut vous faciliter la tâche.

Vous pouvez l'importer depuis notre bibliothèque de modèles ou télécharger la version jointe à cet article dans votre bibliothèque d'automatisation au format Bash. Vous pouvez ensuite l'exécuter sur les appareils à l'aide d'une automatisation planifiée, d'une tâche planifiée ou de manière ponctuelle à partir du bouton de lecture sur la page de l'appareil ou de l'onglet Appareils.

Script

#!/usr/bin/env bash
#
# Description : désinstalle TeamViewer.
#
# Exemple : (sans paramètres)
#
# Vérification que TeamViewer est toujours installé.
# Suppression de TeamViewer à l'aide de « /Library/Application Support/TeamViewer/TeamViewerUninstaller.app/Contents/Helpers/UninstallTeamViewer » --force
# Désinstallation en cours...
# Terminé.
# Vérification que TeamViewer a bien été supprimé.
# TeamViewer a été supprimé avec succès.
#
# Version : 1.0
# Notes de mise à jour : version initiale

# Fonction permettant d'attendre l'arrêt du processus TeamViewer, avec un délai d'attente de 5 minutes.
waitForTeamViewer() {
  # Définir le délai d'attente à 5 minutes à partir de maintenant.
  timeout=$(date -v+5M "+%s")

  # Vérifier si le processus TeamViewer est en cours d'exécution.
  if pgrep -ifl "TeamViewer" 1>/dev/null; then
    echo "En attente de l'arrêt du processus TeamViewer."
  fi

  # Boucle jusqu'à l'arrêt du processus TeamViewer ou jusqu'à l'expiration du délai.
  while pgrep -ifl "TeamViewer" 1>/dev/null; do
    if [[ $(date "+%s") -ge "$timeout" ]]; then
      echo "[Avertissement] Le délai d'expiration de cinq minutes est atteint."
      break
    fi

    # Attendez brièvement avant de vérifier à nouveau.
    sleep 0.1
  done
}

# Fonction permettant d'afficher un message d'erreur et de quitter avec un code de retour spécifié.
die() {
  local _ret="${2:-1}"
  echo "$1" >&2
  exit "${_ret}"
}

echo " "

# Initialiser la variable du code de sortie si elle n'est pas déjà définie.
if [[ -z "$exitCode" ]]; then
  exitCode=0
fi

# S'assurer que le script est exécuté avec les permissions root.
if [[ $(id -u) -ne 0 ]]; then
  _PRINT_HELP=no die "[Erreur] Ce script doit être exécuté avec les permissions root. Essayez de l'exécuter avec sudo ou en tant qu'utilisateur système/root. » 1
fi

echo « Vérification que TeamViewer est toujours installé. »

# Vérification de la disponibilité du programme de désinstallation de TeamViewer à l'aide de `mdfind`.
if mdfindResult=$(mdfind kind:application « TeamViewer » 2>/dev/null | grep -v '^$'); then
  teamViewerUninstaller=$(echo "$mdfindResult" | grep "TeamViewerUninstaller")
  teamViewerInstalled="true"
fi

# Vérifiez si le répertoire de l'application TeamViewer existe.
if [[ -d "/Applications/TeamViewer.app" ]]; then
  teamViewerInstalled="true"
fi

# Vérifier si le chemin d'accès spécifique au programme de désinstallation existe toujours ; si oui, quitter avec une erreur.
if [[ -f "/Library/Application Support/TeamViewer/TeamViewerUninstaller.app/Contents/Helpers/UninstallTeamViewer" ]]; then
  teamViewerUninstaller="/Library/Application Support/TeamViewer/TeamViewerUninstaller.app"
  teamViewerInstalled="true"
fi

# Si TeamViewer n'est pas installé, vérifier la présence de l'outil QuickSupport et quitter avec une erreur.
if [[ "$teamViewerInstalled" != "true" ]]; then
  if pgrep -ifl "TeamViewer" 1>/dev/null; then
    echo "[Alerte] L'outil TeamViewer QuickSupport a été détecté. L'outil QuickSupport n'est pas installé sur le système car il s'agit d'une application portable."
  fi
  _PRINT_HELP=no die "[Erreur] TeamViewer n'est pas installé sur ce système." 1
fi

# Tenter de désinstaller TeamViewer à l'aide du ou des programmes de désinstallation trouvés par `mdfind`.
if [[ -n "$teamViewerUninstaller" ]]; then
  while IFS= read -r uninstaller; do
    echo « Suppression de TeamViewer à l'aide de '"$uninstaller/Contents/Helpers/UninstallTeamViewer" --force' »

    # Exécuter le programme de désinstallation avec l'option `--force`.
    if ! "$uninstaller/Contents/Helpers/UninstallTeamViewer" --force; then
      _PRINT_HELP=no die « [Erreur] Échec de la désinstallation de TeamViewer. » 1
    fi

    # Attendre l'arrêt du processus TeamViewer.
    waitForTeamViewer

    # Vérifier si le programme de désinstallation est toujours présent ; si ce n'est pas le cas, interrompre la boucle.
    if ! mdfind kind:application "TeamViewer" 2>/dev/null | grep "TeamViewerUninstaller" 1>/dev/null; then
      break
    fi
  done <<< "$teamViewerUninstaller"

  uninstallAttempted="true"
fi

# Tenter de désinstaller TeamViewer à l'aide d'un chemin de désinstallation spécifique.
if [[ -f "/Library/Application Support/TeamViewer/TeamViewerUninstaller.app/Contents/Helpers/UninstallTeamViewer" ]]; then
  echo "Suppression de TeamViewer à l'aide de '"/Library/Application Support/TeamViewer/TeamViewerUninstaller.app/Contents/Helpers/UninstallTeamViewer" --force'"

  # Exécutez le programme de désinstallation avec l'option « --force ».
  if ! "/Library/Application Support/TeamViewer/TeamViewerUninstaller.app/Contents/Helpers/UninstallTeamViewer" --force; then
    _PRINT_HELP=no die "[Erreur] Échec de la désinstallation de TeamViewer." 1
  fi

  # Attendre que le processus TeamViewer s'arrête.
  waitForTeamViewer

  uninstallAttempted="true"
fi

# Si aucune tentative de désinstallation n'a été effectuée, quitter avec une erreur.
if [[ "$uninstallAttempted" != "true" ]]; then
  _PRINT_HELP=no die « [Erreur] Impossible de trouver le programme de désinstallation de TeamViewer. » 1
fi

echo « Vérification de la suppression de TeamViewer. »

# Vérifier si l'application est toujours présente ; si c'est le cas, quitter avec une erreur.
if foundApplications=$(mdfind kind:application « TeamViewer » 2>/dev/null); then
  while IFS= read -r application; do
    if [[ -f "$application" || -d "$application" ]]; then
      _PRINT_HELP=no die "[Erreur] Échec de la désinstallation de TeamViewer." 1
    fi
  done <<< "$foundApplications"
fi

# Vérifier si l'application est toujours présente ; si oui, quitter avec une erreur.
if [[ -d "/Applications/TeamViewer.app" ]]; then
  _PRINT_HELP=no die "[Erreur] Échec de la désinstallation de TeamViewer." 1
fi

# Vérifier si le chemin d'accès spécifique au programme de désinstallation existe toujours ; si oui, quitter avec une erreur.
if [[ -f "/Library/Application Support/TeamViewer/TeamViewerUninstaller.app/Contents/Helpers/UninstallTeamViewer" ]]; then
  _PRINT_HELP=no die "[Erreur] Échec de la désinstallation de TeamViewer." 1
fi

echo "TeamViewer a été supprimé avec succès."

# Quittez le script avec le code de sortie spécifié.
exit "$exitCode"

FAQ

Pour aller plus loin