0 votos

¿Cómo eliminar el retraso de 10 minutos para un cierre programado?

Cuando configuro un Mac utilizado como pantalla pública (recordatorio: se enciende y se apaga automáticamente durante el horario laboral) para que se apague a una hora determinada (a través de Ahorro de energía), macOS realiza una cuenta atrás de 60 segundos y, a continuación, añade una cuenta atrás adicional de 10 minutos.

¿Qué puedo cambiar en MacOS para que no haya ninguna cuenta atrás en un apagado programado?

Encontré artículos en la Red detallando comandos para Terminal pero no manejan la cuenta regresiva de 60 segundos/10 minutos.

Alguien me lo dijo: "usa este AppleScript

osascript -e 'tell application "System Events" to shut down' 

y eso funcionará.

He aquí el problema. Pego esa línea de código que me ha dado en AppleScript Editor, luego la guardo como una aplicación AppleScript (hacerlo en Automator y crear así una aplicación es lo mismo). Luego voy al Calendario de Apple, creo un evento que se repita diariamente y le asocio una acción para abrir esa app.

Ahora, aquí está el truco: Si hago doble clic en la aplicación, el Mac se apaga inmediatamente. No pasa nada. Pero eso no es lo que necesito. Si el evento se activa en el Calendario, cada vez que abre la app, dice que es la primera vez que se ejecuta esta app y si está bien abrirla. A pesar de que hago click en ABRIR (o SI, no recuerdo), esta advertencia aparece cada vez que se lanza la app. Parece que el proceso de Shut Down ocurre tan rápido que MacOS no tiene tiempo de ponerlo en el registro de apps autorizadas.

Así que la pregunta es: ¿cómo lanzar esa línea de código -sin comprar el PowerManager de 50 dólares- a una hora concreta? Porque cuando esa línea de código se ejecuta no desde una aplicación AppleScript o Automator, funciona (sin aviso de la aplicación).

Gracias, señor.

0 votos

¿Por qué no hacerlo en bash - poweroff ? Tendrías que ejecutarlo como dameon del sistema (como Root) y programarlo con launchd.

1 votos

No tengo ni idea de lo que son bash, daemon. Sólo intento encontrar cómo programar un apagado sin tener los 60 segundos y la cuenta atrás de 10 minutos y todos los problemas descritos en mi primer mensaje con la alerta de app no autorizada. La utilidad PowerManager hace el trabajo pero tengo 16 pantallas Mac/Public...

0 votos

Podrías ir por ahí, pero hay una forma mucho más fácil. Estás administrando múltiples máquinas, lo que ahora es territorio de SysAdmin... es un buen momento para adquirir algunas habilidades.... Escribí una respuesta para empezar.... La parte realmente interesante es la script que está llamando en su pregunta original está siendo llamado desde Bash.

3voto

Douglas Puntos 10417

No necesitas aplicaciones de pago para hacerlo, ya que es muy sencillo utilizando Bash (el shell por defecto en Terminal).

Puede apagar el ordenador ejecutando el comando en Terminal

$ sudo shutdown -h now

Si lo intentas, apagará tu Mac inmediatamente.

Qué hace cada parte

  • sudo = ejecutar como usuario root
  • shutdown = el comando para apagar el sistema
  • -h = detiene el sistema
  • now = inmediatamente

Así, si quisieras apagar el ordenador dentro de 5 minutos, tu orden sería:

$ sudo shutdown -h +5

Incluso puedes programarlo para que se reinicie ( -r en lugar de -h ) a una hora determinada (23:00 todas las noches)

$ sudo shutdown -r -h 23:00

Si bien ese comando por sí solo, haría lo que quieres, es limitado debido a sudo tendrás que introducir tu contraseña cuando se ejecute. Esto significa que tendrás que estar on-prem en cada máquina cada vez que quieras ejecutar el comando (todos los días), así que necesitamos algo que ejecute el comando como root para que sea automático.

Escribir un script Bash

El script para esto es bastante simple; es una sola línea que llama al comando shutdown:

#!/bin/bash

/sbin/shutdown -h now

Llámalo auto_shutdown.sh y guárdala en un lugar conveniente. Hazlo ejecutable emitiendo el comando:

$ sudo chmod +x auto_shutdown.sh

Esto activará el bit de ejecución y permitirá al sistema procesarlo como un programa. Ahora tienes tu script, sólo necesitas algo para ejecutar ese script a una hora predeterminada.

Utilizando Launchd para programar su trabajo

launchd es el marco de gestión de servicios que inicia/para/reinicia procesos, servicios, demonios, etc. Para configurar un trabajo que se inicie con launchd necesitas dos cosas:

  • tipo de trabajo a ejecutar; ejecutar como el usuario para un usuario, como el usuario para todos los usuarios, o un trabajo ejecutado por el sistema como root . Queremos el último.
  • plist (archivo XML) que describe el trabajo. Los elementos clave en los que debes centrarte ahora son los siguientes ProgramArguments que llama al script y al CalendarInterval que especifica cuándo deben ejecutarse los trabajos. Para este ejemplo, llame a su plist user.com.autoShutdown.plist (ninguna otra razón para esa convención de nomenclatura aparte de que sigue las convenciones de Apple).

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
     "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
     <plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.user.autoShutdown</string>
        <key>ProgramArguments</key>
        <array>
            <string>/Path_to_Script/auto_shutdown.sh</string>
        </array>
        <key>StartCalendarInterval</key>
        <array>
        <dict>
            <key>Hour</key>
            <integer>21</integer>
            <key>Minute</key>
            <integer>30</integer>
        </dict>
    
    </dict>

Este plist está configurado para ejecutar el auto_shutdown.sh script todos los días a las 23:30.

Ya que queremos ejecutar esto como Root, copie el plist en la carpeta /Library/LaunchDaemons directorio.

$ sudo cp com.user.autoShutdown.plist /Library/LaunchDaemons

Por último, cargue el trabajo en launchd :

$ sudo launchctl load com.user.autoShutdown.plist

Ya está. Todos los días a las 11:30, el sistema se apagará automáticamente.

Replique en todas sus máquinas

Copie tanto el script como el plist en cada máquina y cargue el trabajo en launchd . Usted acaba de establecer el tiempo de apagado para todas las máquinas y no requiere de terceros ($$$) utilidades.


Puedes encontrar información sobre todos los comandos listados aquí consultando su página man. Escriba man <command> para el comando que le interesa.

2 votos

Este es definitivamente el camino a seguir sobre AppleScript. +1

0 votos

Vaya, es una respuesta sorprendente. Un millón de gracias. BTW, he encontrado una solución a mi problema sin Terminal y lo explico aquí en la parte inferior de la página: discussions.apple.com/message/33021242?ac_cid=op123456#33021‌​242 Pero guardo en lugar seguro tu mensaje y lo probaré pronto.

0 votos

Y con el truco del Calendario, el cliente puede simplemente editar la hora en la aplicación Calendario sin ir a Terminal y alterar el código inadvertidamente.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X