Cada Mac tiene un nombre de ordenador local — el que el usuario estableció durante la configuración inicial, o que cambió más tarde por algo personal como "MacBook de Juan". En el panel de Applivery, sin embargo, los dispositivos suelen mostrar el nombre genérico asignado en el momento de la inscripción. A escala, esto hace que identificar máquinas específicas por nombre sea casi imposible: acabas con una lista de entradas MacBook-Pro-7 sin forma fácil de saber a quién pertenece cada una.
Este script cierra esa brecha. Lee el ComputerName local de cada Mac y lo actualiza en el panel de Applivery mediante la API, manteniendo ambos sincronizados. Ejecútalo periódicamente y podrás identificar siempre cualquier dispositivo de un vistazo.
El agente de Applivery para macOS debe estar instalado y activo en el dispositivo. Obtén más información sobre el agente macOS.
Requisitos
| Requisito | Detalle |
|---|---|
| Plataforma | macOS |
| Privilegios de ejecución | Root (predeterminado en Applivery) |
| Acceso a internet | El dispositivo debe poder acceder a api.applivery.io |
| Token Bearer | Un token válido de una cuenta de servicio con rol de Editor o superior |
| ID de organización | El slug/ID de tu organización de Applivery |
Antes de empezar — Obtén tu token Bearer y tu ID de organización
ID de organización — Tu ID de organización es el slug visible en la URL del panel de Applivery (por ejemplo, mi-empresa).
Token Bearer (mediante cuenta de servicio) — Applivery usa cuentas de servicio para representar usuarios no humanos que pueden acceder a la API de administración de Applivery. Cada cuenta de servicio tiene un token Bearer asociado que se usa como cabecera Authorization en las llamadas a la API.
Configuración
Una vez en el panel de Applivery, sigue los pasos descritos aquí para crear un script. Pega el siguiente script en el editor, reemplazando los valores de marcador de posición que se muestran en la tabla a continuación.
| Variable | Descripción | Ejemplo |
|---|---|---|
ID_ORG |
Tu slug/ID de organización de Applivery | mi-empresa |
API_TOKEN |
Token Bearer de una cuenta de servicio con rol de Editor o superior | wfkj2Gi... |
Selecciona Bash como lenguaje, dale un nombre descriptivo (por ejemplo, Sincronizar nombre del dispositivo) y haz clic en Crear.
#!/bin/bash
# ---
# Title: Sync Device Name with Applivery API
# Description: Automatically updates the Device Display Name in Applivery Dashboard to match the local macOS ComputerName.
# Author: Applivery
# Version: 1.0.0
# ---
# ==========================================
# CONFIGURATION
# ==========================================
ID_ORG="your-org-id"
API_TOKEN="your-api-token"
BASE_URL="https://api.applivery.io/v1/organizations/$ID_ORG/mdm/apple/enterprise/devices"
# ==========================================
# 1. LOCAL DATA GATHERING
# ==========================================
SERIAL_NUMBER=$(system_profiler SPHardwareDataType | grep "Serial Number" | awk '{print $4}')
NEW_DEVICE_NAME=$(scutil --get ComputerName)
if [ -z "$NEW_DEVICE_NAME" ]; then
echo "Error: Local ComputerName is empty. Please set a hostname on the Mac."
exit 1
fi
echo "Syncing Device Name for Serial: $SERIAL_NUMBER"
echo "Target Name: $NEW_DEVICE_NAME"
# ==========================================
# 2. API INTERACTION
# ==========================================
# GET Device Info to find the internal Device ID
response=$(curl -s -X GET "$BASE_URL/$SERIAL_NUMBER" \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json")
if echo "$response" | grep -q '"admDevice"'; then
DEVICE_ID=$(echo "$response" | grep -o '"admDevice":"[^"]*"' | sed 's/"admDevice":"\([^"]*\)"/\1/')
if [ -n "$DEVICE_ID" ]; then
echo "Found internal DeviceID: $DEVICE_ID"
update_response=$(curl -s -X PUT "$BASE_URL/$DEVICE_ID" \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"displayName\": \"$NEW_DEVICE_NAME\"}")
if echo "$update_response" | grep -q '"status":200' || echo "$update_response" | grep -q '"displayName"'; then
echo "SUCCESS: Display name updated to: $NEW_DEVICE_NAME"
else
echo "FAILURE: Error updating name: $update_response"
fi
else
echo "ERROR: Could not find DeviceID for Serial Number $SERIAL_NUMBER"
fi
else
echo "ERROR: Could not fetch device info from API. Check Token and Org ID."
echo "Response: $response"
fi
exit 0
Ahora, navega a cualquiera de tus Dispositivos, selecciona la pestaña Scripts, haz clic en el botón + Asignar Script y selecciona el que acabas de crear.
También puedes asignar scripts a Políticas. Para ello, navega a la sección Políticas, selecciona la política deseada y haz clic en la pestaña Scripts. El proceso será el mismo que al asignarlo directamente a un dispositivo individual.
| Método | Comportamiento | ¿Recomendado? |
|---|---|---|
| Once | Se ejecuta una vez por dispositivo. | ✅ Útil para establecer el nombre de visualización desde el primer día de inscripción. |
| Loop | Se ejecuta repetidamente en el intervalo configurado (15m, 1h, 6h, 1d, 7d). | ✅ Recomendado para sincronización continua — mantiene el panel actualizado a medida que los usuarios renombran sus equipos. |
| On demand | Solo se ejecuta cuando se activa manualmente. | ✅ Útil para una actualización puntual activada por TI. |
La configuración recomendada es usar Loop con un intervalo semanal (7d) para mantener el panel sincronizado sin generar tráfico API innecesario, combinado con Once durante la inscripción para establecer el nombre desde el primer día.
Este script no requiere ningún argumento. El nombre del dispositivo y el número de serie se obtienen automáticamente del sistema local. Haz clic en Añadir para guardar la asignación.
Disponible en GitHub
Este script es parte del Repositorio público de scripts de Applivery. El código fuente completo está disponible allí para revisión, adaptación y contribución.