Tema
Este artículo explica cómo utilizar un script personalizado para eliminar TeamViewer de sus terminales macOS.
Para terminales Microsoft Windows, consulte nuestro artículo Scripts personalizados: Eliminar TeamViewer (Windows).
Entorno
NinjaOne Endpoint Management
Descripción
Si necesita eliminar instancias de TeamViewer de sus terminales, el script Eliminar TeamViewer puede facilitarle el proceso.
Puede importarlo desde nuestra biblioteca de plantillas o cargar la versión adjunta a este artículo en su biblioteca de automatización en formato Bash. A continuación, puede ejecutarlo en los dispositivos mediante una automatización programada, una tarea programada o de forma ad hoc desde el botón de reproducción de la página del dispositivo o la pestaña Dispositivos.
Script
#!/usr/bin/env bash
#
# Descripción: Desinstala TeamViewer.
#
# Ejemplo: (Sin parámetros)
#
# Verificando que TeamViewer sigue instalado.
# Eliminando TeamViewer utilizando '"/Library/Application Support/TeamViewer/TeamViewerUninstaller.app/Contents/Helpers/UninstallTeamViewer" --force'
# Desinstalando...
# Hecho.
# Verificando que TeamViewer se ha eliminado.
# TeamViewer se ha eliminado correctamente.
#
# Versión: 1.0
# Notas de la versión: Versión inicial
# Función para esperar a que se detenga el proceso de TeamViewer, con un tiempo de espera de 5 minutos.
waitForTeamViewer() {
# Establecer el tiempo de espera en 5 minutos a partir de ahora.
timeout=$(date -v+5M "+%s")
# Comprobar si el proceso TeamViewer se está ejecutando.
if pgrep -ifl "TeamViewer" 1>/dev/null; then
echo "Esperando a que se detenga el proceso TeamViewer."
fi
# Bucle hasta que se detenga el proceso TeamViewer o se alcance el tiempo de espera.
while pgrep -ifl "TeamViewer" 1>/dev/null; do
if [[ $(date "+%s") -ge "$timeout" ]]; then
echo "[Advertencia] Se ha alcanzado el tiempo de espera de cinco minutos."
break
fi
# Espera brevemente antes de volver a comprobar.
sleep 0.1
done
}
# Función para imprimir un mensaje de error y salir con un código de retorno especificado.
die() {
local _ret="${2:-1}"
echo "$1" >&2
exit "${_ret}"
}
echo " "
# Inicializar la variable del código de salida si aún no está establecida.
if [[ -z "$exitCode" ]]; then
exitCode=0
fi
# Asegúrate de que el script se ejecute con permisos de root.
if [[ $(id -u) -ne 0 ]]; then
_PRINT_HELP=no die "[Error] Este script debe ejecutarse con permisos de root. Intenta ejecutarlo con sudo o como usuario del sistema/root». 1
fi
echo «Verificando que TeamViewer sigue instalado».
# Comprueba si el desinstalador de TeamViewer está disponible utilizando `mdfind`.
if mdfindResult=$(mdfind kind:application «TeamViewer» 2>/dev/null | grep -v '^$'); then
teamViewerUninstaller=$(echo "$mdfindResult" | grep "TeamViewerUninstaller")
teamViewerInstalled="true"
fi
# Comprueba si existe el directorio de la aplicación TeamViewer.
if [[ -d "/Applications/TeamViewer.app" ]]; then
teamViewerInstalled="true"
fi
# Comprueba si la ruta específica del desinstalador sigue existiendo; si es así, sal con un error.
if [[ -f "/Library/Application Support/TeamViewer/TeamViewerUninstaller.app/Contents/Helpers/UninstallTeamViewer" ]]; then
teamViewerUninstaller="/Library/Application Support/TeamViewer/TeamViewerUninstaller.app"
teamViewerInstalled="true"
fi
# Si TeamViewer no está instalado, comprueba si existe la herramienta QuickSupport y sal con un error.
if [[ "$teamViewerInstalled" != "true" ]]; then
if pgrep -ifl "TeamViewer" 1>/dev/null; then
echo "[Alerta] Se ha detectado la herramienta TeamViewer QuickSupport. La herramienta QuickSupport no está instalada en el sistema porque es una aplicación portátil."
fi
_PRINT_HELP=no die "[Error] TeamViewer no está instalado en este sistema." 1
fi
# Intenta desinstalar TeamViewer utilizando los desinstaladores encontrados por `mdfind`.
if [[ -n "$teamViewerUninstaller" ]]; then
while IFS= read -r uninstaller; do
echo "Eliminando TeamViewer utilizando '"$uninstaller/Contents/Helpers/UninstallTeamViewer" --force'"
# Ejecutar el desinstalador con la opción `--force`.
if ! "$uninstaller/Contents/Helpers/UninstallTeamViewer" --force; then
_PRINT_HELP=no die "[Error] No se ha podido desinstalar TeamViewer." 1
fi
# Esperar a que se detenga el proceso de TeamViewer.
waitForTeamViewer
# Comprueba si el desinstalador sigue presente; si no es así, rompe el bucle.
if ! mdfind kind:application "TeamViewer" 2>/dev/null | grep "TeamViewerUninstaller" 1>/dev/null; then
break
fi
done <<< "$teamViewerUninstaller"
uninstallAttempted="true"
fi
# Intenta desinstalar TeamViewer utilizando una ruta de desinstalación específica.
if [[ -f "/Library/Application Support/TeamViewer/TeamViewerUninstaller.app/Contents/Helpers/UninstallTeamViewer" ]]; then
echo "Eliminando TeamViewer utilizando '"/Library/Application Support/TeamViewer/TeamViewerUninstaller.app/Contents/Helpers/UninstallTeamViewer" --force'"
# Ejecutar el desinstalador con la opción `--force`.
if ! "/Library/Application Support/TeamViewer/TeamViewerUninstaller.app/Contents/Helpers/UninstallTeamViewer" --force; then
_PRINT_HELP=no die "[Error] No se ha podido desinstalar TeamViewer." 1
fi
# Espera a que se detenga el proceso de TeamViewer.
waitForTeamViewer
uninstallAttempted="true"
fi
# Si no se ha intentado desinstalar, sal con un error.
if [[ "$uninstallAttempted" != "true" ]]; then
_PRINT_HELP=no die "[Error] No se ha encontrado el desinstalador de TeamViewer." 1
fi
echo "Verificando que TeamViewer se ha eliminado."
# Comprueba si la aplicación sigue presente; si es así, sale con un error.
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 "[Error] No se ha podido desinstalar TeamViewer." 1
fi
done <<< "$foundApplications"
fi
# Comprueba si la aplicación sigue presente; si es así, sal con un error.
if [[ -d "/Applications/TeamViewer.app" ]]; then
_PRINT_HELP=no die "[Error] No se ha podido desinstalar TeamViewer." 1
fi
# Comprueba si la ruta específica del desinstalador sigue existiendo; si es así, sal con un error.
if [[ -f "/Library/Application Support/TeamViewer/TeamViewerUninstaller.app/Contents/Helpers/UninstallTeamViewer" ]]; then
_PRINT_HELP=no die "[Error] No se ha podido desinstalar TeamViewer." 1
fi
echo "TeamViewer se ha eliminado correctamente."
# Salir del script con el código de salida especificado.
exit "$exitCode"