Sei già un cliente NinjaOne? Effettua il login per visualizzare le altre guide e gli ultimi aggiornamenti.

Script personalizzati: Rimuovi TeamViewer (macOS)

Argomento

Questo articolo spiega come utilizzare uno script personalizzato per rimuovere TeamViewer dai tuoi endpoint macOS.

Per gli endpoint Microsoft Windows, consulta il nostro articolo Script personalizzati: rimuovere TeamViewer (Windows).

Ambiente

NinjaOne Endpoint Management

Descrizione

Se è necessario rimuovere le istanze di TeamViewer dai terminali, lo script Rimuovi TeamViewer può semplificare il processo.

Puoi importarlo dalla nostra Libreria modelli o caricare la versione allegata a questo articolo nella tua Libreria automazioni in formato Bash. Quindi, puoi eseguirlo sui dispositivi utilizzando un'automazione pianificata, un'attività pianificata o ad hoc dal pulsante di riproduzione nella pagina del dispositivo o nella scheda Dispositivi.

Script

#!/usr/bin/env bash
#
# Descrizione: disinstalla TeamViewer.
#
# Esempio: (senza parametri)
#
# Verifica che TeamViewer sia ancora installato.
# Rimozione di TeamViewer utilizzando '"/Library/Application Support/TeamViewer/TeamViewerUninstaller.app/Contents/Helpers/UninstallTeamViewer" --force'
# Disinstallazione in corso...
# Operazione completata.
# Verifica che TeamViewer sia stato rimosso.
# TeamViewer è stato rimosso correttamente.
#
# Versione: 1.0
# Note di rilascio: versione iniziale

# Funzione per attendere l'arresto del processo TeamViewer, con un timeout di 5 minuti.
waitForTeamViewer() {
  # Imposta il timeout a 5 minuti da ora.
  timeout=$(date -v+5M "+%s")

  # Verifica se il processo TeamViewer è in esecuzione.
  if pgrep -ifl "TeamViewer" 1>/dev/null; then
    echo "In attesa dell'arresto del processo TeamViewer."
  fi

  # Ripeti fino all'arresto del processo TeamViewer o al raggiungimento del timeout.
  while pgrep -ifl "TeamViewer" 1>/dev/null; do
    if [[ $(date "+%s") -ge "$timeout" ]]; then
      echo "[Avviso] Il timeout di cinque minuti è stato raggiunto."
      break
    fi

    # Attendere brevemente prima di ricontrollare.
    sleep 0.1
  done
}

# Funzione per stampare un messaggio di errore e uscire con un codice di ritorno specificato.
die() {
  local _ret="${2:-1}"
  echo "$1" >&2
  exit "${_ret}"
}

echo " "

# Inizializza la variabile del codice di uscita se non è già impostata.
if [[ -z "$exitCode" ]]; then
  exitCode=0
fi

# Assicurarsi che lo script sia eseguito con i permessi di root.
if [[ $(id -u) -ne 0 ]]; then
  _PRINT_HELP=no die "[Errore] Questo script deve essere eseguito con i permessi di root. Provare a eseguirlo con sudo o come utente di sistema/root." 1
fi

echo "Verifica che TeamViewer sia ancora installato."

# Controllare se il programma di disinstallazione di TeamViewer è disponibile utilizzando `mdfind`.
if mdfindResult=$(mdfind kind:application "TeamViewer" 2>/dev/null | grep -v '^$'); then
  teamViewerUninstaller=$(echo "$mdfindResult" | grep "TeamViewerUninstaller")
  teamViewerInstalled="true"
fi

# Verifica se la directory dell'applicazione TeamViewer esiste.
if [[ -d "/Applications/TeamViewer.app" ]]; then
  teamViewerInstalled="true"
fi

# Verifica se il percorso specifico del programma di disinstallazione esiste ancora; in caso affermativo, esci con un errore.
if [[ -f "/Library/Application Support/TeamViewer/TeamViewerUninstaller.app/Contents/Helpers/UninstallTeamViewer" ]]; then
  teamViewerUninstaller="/Library/Application Support/TeamViewer/TeamViewerUninstaller.app"
  teamViewerInstalled="true"
fi

# Se TeamViewer non è installato, controlla la presenza dello strumento QuickSupport ed esci con un errore.
if [[ "$teamViewerInstalled" != "true" ]]; then
  if pgrep -ifl "TeamViewer" 1>/dev/null; then
    echo "[Avviso] È stato rilevato lo strumento TeamViewer QuickSupport. Lo strumento QuickSupport non è installato sul sistema perché è un'applicazione portatile."
  fi
  _PRINT_HELP=no die "[Errore] TeamViewer non è installato su questo sistema." 1
fi

# Tentare di disinstallare TeamViewer utilizzando i programmi di disinstallazione trovati da `mdfind`.
if [[ -n "$teamViewerUninstaller" ]]; then
  while IFS= read -r uninstaller; do
    echo "Rimozione di TeamViewer utilizzando '"$uninstaller/Contents/Helpers/UninstallTeamViewer" --force'"

    # Esegui il programma di disinstallazione con l'opzione `--force`.
    if ! "$uninstaller/Contents/Helpers/UninstallTeamViewer" --force; then
      _PRINT_HELP=no die "[Errore] Impossibile disinstallare TeamViewer." 1
    fi

    # Attendi che il processo TeamViewer si interrompa.
    waitForTeamViewer

    # Verificare se il programma di disinstallazione è ancora presente; in caso contrario, interrompere il ciclo.
    if ! mdfind kind:application "TeamViewer" 2>/dev/null | grep "TeamViewerUninstaller" 1>/dev/null; then
      break
    fi
  done <<< "$teamViewerUninstaller"

  uninstallAttempted="true"
fi

# Tentare di disinstallare TeamViewer utilizzando un percorso di disinstallazione specifico.
if [[ -f "/Library/Application Support/TeamViewer/TeamViewerUninstaller.app/Contents/Helpers/UninstallTeamViewer" ]]; then
  echo "Rimozione di TeamViewer utilizzando '"/Library/Application Support/TeamViewer/TeamViewerUninstaller.app/Contents/Helpers/UninstallTeamViewer" --force'"

  # Esegui il programma di disinstallazione con l'opzione `--force`.
  if ! "/Library/Application Support/TeamViewer/TeamViewerUninstaller.app/Contents/Helpers/UninstallTeamViewer" --force; then
    _PRINT_HELP=no die "[Errore] Impossibile disinstallare TeamViewer." 1
  fi

  # Attendere che il processo TeamViewer si interrompa.
  waitForTeamViewer

  uninstallAttempted="true"
fi

# Se non è stato effettuato alcun tentativo di disinstallazione, uscire con un errore.
if [[ "$uninstallAttempted" != "true" ]]; then
  _PRINT_HELP=no die "[Errore] Impossibile trovare il programma di disinstallazione di TeamViewer." 1
fi

echo "Verifica della rimozione di TeamViewer."

# Verifica se l'app è ancora presente; in caso affermativo, esci con un errore.
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 "[Errore] Impossibile disinstallare TeamViewer." 1
    fi
  done <<< "$foundApplications"
fi

# Controlla se l'app è ancora presente; in caso affermativo, esci con un errore.
if [[ -d "/Applications/TeamViewer.app" ]]; then
  _PRINT_HELP=no die "[Errore] Impossibile disinstallare TeamViewer." 1
fi

# Controlla se il percorso specifico del programma di disinstallazione esiste ancora; in caso affermativo, esci con un errore.
if [[ -f "/Library/Application Support/TeamViewer/TeamViewerUninstaller.app/Contents/Helpers/UninstallTeamViewer" ]]; then
  _PRINT_HELP=no die "[Errore] Impossibile disinstallare TeamViewer." 1
fi

echo "TeamViewer è stato rimosso correttamente."

# Esci dallo script con il codice di uscita specificato.
exit "$exitCode"

Domande frequenti

Passi successivi