Ir al contenido

Desinstalar

Requiere @openlatch/client 0.11.12 o una versión posterior

Usa esta página para retirar el cliente de las máquinas: el portátil de un desarrollador, una oleada de despliegue o todo el parque. El cliente se instala y se ejecuta a nivel de usuario, así que una eliminación se ejecuta máquina por máquina, como el usuario para el que se instaló el cliente. Retíralo por la misma ruta que lo instaló.

Instalado conSe retira con
La ruta del desarrolladorRetirar el cliente de una sola máquina
Un script de plataforma de Intune o una aplicación Win32Microsoft Intune
Una directiva de Jamf ProJamf Pro
Ansible o un paso de pipelineAnsible
Una imagen de contenedor o una tarea de CIContenedores e integración continua

Qué quita una desinstalación de la máquina

Sección titulada «Qué quita una desinstalación de la máquina»

Una desinstalación tiene tres niveles. Una marcha atrás en una flota usa normalmente el tercero.

NivelComandoQué quitaQué deja
Desinstalaciónopenlatch uninstallLa entrada del cliente en la configuración de cada agente, restaurando cada agente como estaba antes de la instalación. El cliente se detiene, y también su arranque automáticoEl directorio de estado, los binarios, la línea PATH, y la CA de relé, todavía de confianza, así que una reinstalación no muestra ningún diálogo
Purgaopenlatch uninstall --purgeLo anterior, más el directorio de estado, con la configuración, los registros locales y los archivos de credenciales cifrados, y la CA de relé con su entrada en el almacén de confianza del usuarioLos binarios, la línea PATH
Eliminación completaLa purga y después el borrado de los binariosTodo lo que colocó la instalaciónEl marcador de inscripción, si una receta de parque dejó uno

El cliente nunca retira, en ningún nivel, un certificado de relé en el que tu gestión de dispositivos confía en toda la máquina: retíralo del perfil o del objeto de directiva de grupo que lo instaló, cuando ya ninguna máquina lo necesite.

openlatch uninstall no toca los ajustes que OpenLatch no escribió. Una purga es local a la máquina: borra del disco la credencial de host de la máquina, y la credencial no se revoca en la plataforma. Revocar y limpiar en la consola cubre la revocación.

Una purga borra los registros locales, y los eventos que la plataforma aún no ha recibido se van con ellos; el cliente te avisa con el número antes de borrarlos. Guarda antes una copia si tu política de retención lo exige.

Qué guardarCómo
Los registros locales de una máquinaEjecuta openlatch doctor --rescue --yes en la máquina. Escribe un archivo ZIP depurado en el directorio actual, o en la ruta indicada con --output
La ficha de un agente en la consolaExport as JSON, en el menú de acciones del agente. Encontrar y leer un agente muestra dónde
El registro de auditoríaExport en la página Audit Trail, en CSV o JSON. Revisar el registro de auditoría cubre los filtros

Sin terminal, openlatch doctor --rescue solo construye el archivo cuando se indica --yes, así que mantén la opción en un script.

Usa esta ruta en una máquina en la que puedas abrir un terminal, normalmente una instalación por la ruta del desarrollador. Cierra sesión primero, para que la credencial de host de la máquina se revoque en la plataforma mientras la máquina sigue en línea, y después purga:

Ventana de terminal
openlatch system auth logout
openlatch uninstall --purge

Cerrar sesión solo revoca la credencial de esta máquina. Cuando no se puede llegar a la plataforma, el cliente conserva la credencial para revocarla más tarde, pero la purga la borra, así que la revocación nunca ocurre: en su lugar, corta el host en la consola, como describe Revocar y limpiar en la consola.

Después borra los dos archivos que colocó la instalación:

Ventana de terminal
rm -f "$HOME/.local/bin/openlatch" "$HOME/.local/bin/openlatch-hook"

La instalación también añadió una línea PATH a tu perfil de shell, con este comentario en la línea anterior:

Ventana de terminal
# openlatch installer

Borra el comentario y la línea que lo sigue, salvo que otras herramientas necesiten que ese directorio esté en el PATH. Deja el propio directorio: otro software puede usarlo.

Para desconectar un agente y conservar los demás, openlatch uninstall --agent recibe el tipo de agente. Solo limita la retirada de los hooks: el cliente se detiene igualmente para toda la máquina, de modo que los demás agentes quedan apuntando a un cliente que ya no se ejecuta. Úsalo antes de reinstalar, no para desactivar un solo agente.

Una marcha atrás en una flota tiene cuatro pasos, en este orden:

  1. Detén la instalación. Quita la directiva o la asignación de instalación de las máquinas en las que das marcha atrás, para que la herramienta no vuelva a instalar el cliente.
  2. Retira el cliente. Entrega la purga y el borrado de archivos de abajo con la misma herramienta, como el mismo usuario con el que se ejecutó la instalación. La purga también retira la CA de relé del almacén de confianza de cada usuario.
  3. Revoca en la consola. Corta los hosts en una sola acción en bloque, que cubre las máquinas que estaban sin conexión durante el paso 2. Revocar y limpiar en la consola muestra cómo.
  4. Si entregaste el certificado de relé de tu organización, retira su confianza en toda la máquina: desasigna el perfil Trusted certificate de Intune, saca el perfil de configuración de Jamf Pro del ámbito, o borra el certificado del objeto de directiva de grupo. Después borra el bundle de tu almacén de secretos.

Los scripts de abajo no cierran sesión. La revocación se hace una sola vez, desde la consola, así que una máquina que no puede llegar a la plataforma en el momento de la eliminación queda cortada igualmente. Las recetas del script de plataforma, de Jamf y de Ansible conservan el marcador de inscripción que dejó la instalación, así que una instalación que todavía llegue a una máquina la omite; borra el marcador solo en una máquina que vayas a volver a inscribir. La aplicación Win32 es la excepción, más abajo.

--yes omite la petición de confirmación. Sin terminal, la desinstalación no pregunta de todos modos, pero mantén la opción para que el script se comporte igual cuando alguien lo ejecute a mano. openlatch uninstall termina con 0 cuando la eliminación está hecha. Termina con un código distinto de cero antes de tocar nada cuando el destino de la purga no es el directorio propio del cliente (OL-1300) o un tipo de agente es desconocido, y después de empezar cuando el cliente no se puede detener o el directorio no se puede borrar. Devuelve ese código de salida a la herramienta, como hacen los scripts de abajo. --json imprime un resumen con los agentes retirados y los avisos que haya.

La desinstalación también informa a la plataforma de que la máquina se desinstaló, cuando el cliente se está ejecutando y puede llegar a la plataforma. La consola todavía no lo muestra como un estado, así que sigue el avance con el informe de la propia herramienta y después con la tabla de hosts con licencia, donde una máquina desinstalada deja de mostrar actividad nueva.

Ejecuta el script con las credenciales del usuario con sesión iniciada, como en la instalación. Ejecutado como SYSTEM, buscaría en el perfil de SYSTEM y no encontraría nada que retirar, así que el script rechaza SYSTEM. Se puede volver a ejecutar sin riesgo en una máquina de la que el cliente ya no está.

Ventana de terminal
# Platform script, user context. Runs silently and cannot prompt.
if ([Security.Principal.WindowsIdentity]::GetCurrent().IsSystem) {
Write-Output "run this script with the logged-on credentials"; exit 1
}
$bin = "$env:LOCALAPPDATA\openlatch\bin"
$openlatch = "$bin\openlatch.exe"
if (-not (Test-Path $openlatch)) { exit 0 }
& $openlatch uninstall --purge --yes
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
Remove-Item -Recurse -Force $bin
exit 0

$ErrorActionPreference no detiene el script cuando falla un comando nativo, así que el script lee $LASTEXITCODE y lo devuelve, e Intune informa del fallo. El Path de usuario conserva una entrada para el directorio borrado, que Windows ignora cuando el directorio ya no existe.

El script ejecuta la purga, así que retira la CA de relé y su entrada en el almacén de confianza del usuario. El perfil Trusted certificate es aparte: desasígnalo cuando ninguna máquina de sus grupos ejecute ya el cliente.

Para la aplicación Win32, usa este script como el script contenedor que ejecuta el Uninstall command de la aplicación, con una línea más antes de la última: borra openlatch-enrolled de %LOCALAPPDATA%, porque la regla de detección de la aplicación lee ese archivo e Intune solo considera retirada la aplicación cuando ya no existe. Después sustituye la asignación Required de la aplicación por Uninstall para los usuarios en los que das marcha atrás, para que Intune ejecute el script contenedor y no vuelva a instalar la aplicación.

Una directiva de Jamf normalmente ejecuta sus scripts como root, y el cliente se instaló para el usuario con la sesión iniciada en la consola. Por eso el script busca ese usuario y ejecuta la eliminación como él, con launchctl asuser y sudo -u, como hizo la instalación. Ejecutada como root sin ese paso, la eliminación buscaría en el directorio personal de root y no encontraría nada que retirar. Si nadie tiene la sesión iniciada, termina con un error, y la directiva vuelve a ejecutarse en el siguiente check-in.

#!/bin/zsh
# A Jamf policy normally runs as root: remove the client as the console user instead.
set -eu
user=$(stat -f%Su /dev/console)
if [[ -z "$user" || "$user" == "root" || "$user" == "loginwindow" ]]; then
echo "nobody is logged in at the console; the next check-in retries"
exit 1
fi
uid=$(id -u "$user")
home=$(dscacheutil -q user -a name "$user" | sed -n 's/^dir: //p')
as_user() { launchctl asuser "$uid" sudo -H -u "$user" "$@"; }
bin="$home/.local/bin"
if [[ ! -x "$bin/openlatch" ]]; then exit 0; fi
as_user "$bin/openlatch" uninstall --purge --yes
as_user rm -f "$bin/openlatch" "$bin/openlatch-hook"

set -e detiene el script en el primer comando que falla, así que el registro de la directiva recoge el código de salida de la desinstalación. Pon Execution Frequency de la directiva en Ongoing, con el desencadenador Recurring Check-in, para que una máquina cuyo usuario no tenía la sesión iniciada se retire en un check-in posterior. Quita antes el ámbito de la directiva de instalación de esas mismas máquinas.

La purga retira la CA de relé y su entrada en el llavero de inicio de sesión del usuario de la consola. Un perfil de configuración a nivel de equipo que confía en tu certificado sigue ahí hasta que saques los equipos de su ámbito.

- name: Remove OpenLatch, as the user who runs the agents
hosts: agent_machines
become: true
become_user: "{{ openlatch_user }}" # Never root.
tasks:
- name: Purge the client and its local state
ansible.builtin.command: "{{ ansible_env.HOME }}/.local/bin/openlatch uninstall --purge --yes"
args:
removes: "{{ ansible_env.HOME }}/.local/bin/openlatch"
- name: Delete the installed files
ansible.builtin.file:
path: "{{ ansible_env.HOME }}/.local/bin/{{ item }}"
state: absent
loop:
- openlatch
- openlatch-hook

Ejecuta el play como el usuario para el que se instaló el cliente, como hace el play de instalación. El argumento removes omite la purga en una máquina de la que el cliente ya no está, así que repetirlo es seguro. Ejecútalo primero contra una muestra de la oleada y lee la salida de las tareas en esas máquinas, como en la instalación.

La purga retira la CA de relé y su entrada de confianza para el usuario con el que se ejecuta el play. Linux no tiene ningún paso de confianza en toda la máquina que deshacer.

No hay nada que retirar de un ejecutor efímero ni de un contenedor: el cliente solo vive lo que dura la tarea. Borra el paso de instalación del pipeline, o la capa de instalación de la imagen, y la siguiente tarea se ejecuta sin él. Borra la clave con la que se inscribieron las tareas cuando ya ninguna tarea la use.

Nada que retirar en la máquina para el certificado de relé. Borra el secreto del certificado de relé del pipeline cuando ya ninguna tarea lo use.

Hazlo cuando las máquinas estén desinstaladas, en este orden:

PasoQué hacerPor qué
1. Cortar los hostsSelecciona los hosts en la tabla de hosts con licencia, elige Remove hosts, después Cut it off, y confirma con Cut off host. Consultar licencias y uso cubre la elecciónSus credenciales dejan de funcionar en su próxima llamada, también en una máquina que estaba sin conexión en el momento de la eliminación, y dejan de contar como hosts con licencia. Un host que cortas solo vuelve si alguien lo inscribe de nuevo
2. Borrar la clave de la oleadaElige Delete en la clave cuando su oleada ya no necesite más inscripciones. Gestionar las claves de API cubre el borradoLa clave solo puede inscribir hosts. Una máquina con el cliente actual tiene su propia credencial de host, así que borrar la clave no desconecta ninguna máquina
3. Eliminar los agentes, si necesitas que desaparezcanDelete agent, en el menú de acciones del agente. Encontrar y leer un agente cubre la eliminaciónLa eliminación borra el agente con cada sesión y cada evento registrados para él. Exporta primero si necesitas la ficha

Para conservar el historial de una máquina y dejar que vuelva más tarde, elige Let it come back on its own en lugar de Cut it off: el host deja de contar ahora y vuelve a contar la próxima vez que informe. Desinstala antes de eliminar un agente: un agente eliminado mientras su cliente sigue ejecutándose vuelve con el siguiente evento.

  • Retira el cliente por la ruta que lo instaló, como el usuario para el que se instaló. Una eliminación ejecutada como root o SYSTEM no encuentra nada que retirar.
  • Una eliminación completa es openlatch uninstall --purge y después los dos archivos instalados. Guarda antes un archivo openlatch doctor --rescue --yes o una exportación de la consola si necesitas los registros.
  • Una marcha atrás en una flota detiene la instalación, entrega la purga, informa de su código de salida y conserva el marcador de inscripción para que la máquina no se vuelva a inscribir.
  • Revoca desde la consola: corta los hosts en una sola acción en bloque, borra la clave de la oleada y elimina los agentes al final.
  • Un openlatch uninstall simple conserva la CA de relé, todavía de confianza; --purge la retira con su entrada de confianza. Un certificado de confianza en toda la máquina sigue ahí hasta que lo retires en tu gestión de dispositivos.