Manda a tu ordenador a reposo dentro de un plazo de tiempo prefijado

AppleScript_Editor_Icon.jpgDídac nos pregunta “Hola, me pongo en contacto con ustedes para solicitarles ayuda. He visto que algunas veces ayudan a los lectores a solucionar pequeños quebraderos de cabeza. Por eso, les expongo mi problema y si ustedes lo ven apropiado, quizás les apetezca echarme una mano con esta situación.

Sucede que a veces dejo mi macbook (unibody, de los primeros. Snow Leopard 10.6.3) realizando alguna tarea, como codificando un video o descargando un documento muy pesado. Mientras tanto siempre pongo el salvapantallas (que al salir me pide la contraseña de administrador) para evitar que terceras personas accedan a mi información. Pero me gustaría que pasado un determinado tiempo, suficiente como para terminar la tarea por la que había dejado el macbook encendido, el ordenador pasase a modo reposo (sleep). Hasta aquí, sencillo.

Probe el programador que incluye Snow Leopard en “preferencias de sistema”, “economizador”…. pero no me convenció, ya que asigna a varios días esa función y luego requiere desconectarla. Luego también probé a programar el reposo con “automator” + “ical”, siguiendo los pasos de un tutorial publicado en faq-mac. Pero sucedía que a pesar de que la tarea de automator funciona, iCal no me lanzaba la aplicación o bien esta no hacía efecto. Finalmente probé soluciones más sencillas y prácticas, como software gratuito “iwillquit”, “itunesshut”, “iwannasleep”, etc etc. Pero ninguna funcionaba. Meditando sobre esto me di cuenta que el problema estaba al poner el salvapantallas (pidiendo luego la contraseña de admin para volver al sistema).

¿Es posible que sea este punto lo que impide que estos programas me pongan el macbook en reposo? ¿puedo solucionar esto de alguna manera que no implique desactivar el salvapantallas? ¿existe algún software gratuito que me pueda servir? Muchísimas gracias por su tiempo y mis máximas felicitaciones por la web, que sigo a diario.

Este es un tema endiabladamente complejo por una parte, y tremendamente sencillo, que cuenta con algunas consideraciones de seguridad previas: vayamos paso por paso.

Seguridad

Tratar de saltarse las opciones de seguridad del salvapantallas es algo complejo, porque Apple ha tomado precisamente las medidas necesarias para que no se pueda acceder precisamente a sistemas de automatización que permitieran, por ejemplo, que una acción de Automator o un Applescript malicioso pudiera aprovecharse de este tipo de “soluciones”. No funciona incluso “emulando” el tecleado de la contraseña desde Applescript cuando el salvapantallas está en marcha y la gestión de usuario y contraseña está activada. En pasadas versiones de Mac OS X si había disponible un comando de terminal que básicamente modificaba las preferencias de seguridad de forma que podía activarse y desactivarse esta opción, pero aparentemente APpl lo ha deprecado en Mac OS X Snow Leopard.

Tras realizar múltiples pruebas e investigar varias horas sobre este problema, no hemos dado con una forma segura y fiable de automatizar este proceso que además en inheremente peligroso, pero si algún usuario sabe, conoce o quiere aportar una idea o un vector de aproximación al problema, quedan los comentarios abiertos a su disposición.

Y ahora, vamos a por la segunda parte.

Mandar a reposo al Mac en un tiempo prefijado

Mac OS X nos permite enviar a reposo a el ordenador de diferentes formas, casi todas ellas automatizadas (como en el panel de control de Economizador) a fechas y horas específicas. También podemos jugar con iCal para lanzar órdenes de forma que “tal día a tal hora” podamos enviar el ordenador a reposo. pero lo que no nos deja hacer el sistema per se es enviar el Mac a reposo “dentro de X minutos”.

Este problema, sin embargo, se puede solucionar con un AppleScript. Abre el Editor de Scripts y copia y pega el siguiente código:

set tiempo to ""

display dialog "¿Tiempo para reposo?" default answer tiempo buttons {"OK"} default button 1

set tiempo to text returned of the result

set tiempo to (tiempo * 60)

delay tiempo

tell application "System Events" to sleep

Explicando el Script

set tiempo to ""

En esta línea definimos la variable tiempo para poder utilizarla en las siguientes operaciones

display dialog "¿Tiempo para reposo?" default answer tiempo buttons {"OK"} default button 1

El cuadro de diálogo que nos permitirá introducir el tiempo que esperará el script antes de mandar el ordenador a reposo. El tiempo se expresa en minutos (60 minutos para una hora, etc …)

set tiempo to text returned of the result

Recuperamos el valor de la variable introducida en el campo de texto

set tiempo to (tiempo * 60)

Con esta operación, multiplicamos el valor de los minutos introducidos para convertirlos en segundos, ya que Applescript cuenta en segundos. Si en vez de trabajar en minutos, quieres hacerlo con horas, modifica esta línea a (tiempo * 360). Para introducir medias horas debes usar notación decimal usando un punto (2.5 horas equivale a 2 horas y media).

delay tiempo

Aquí, la variable tiempo se usa en conjunción con delay, un comando que contará los segundos expresados en la variable hasta ejecutar la siguiente línea del script.

tell application "System Events" to sleep

La línea que envía el ordenador a reposo.

Extras

Puedes, en medio de este proceso, activar el salvapantallas para que durante el tiempo en el que el ordenador va a reposo, la pantalla muestre la correspondiente selección que hayas hecho en el Panel de Control de Escritorio y Salvapantallas. El script quedaría así.

set tiempo to ""

display dialog "¿Tiempo para reposo?" default answer tiempo buttons {"OK"} default button 1

set tiempo to text returned of the result

set tiempo to (tiempo * 60)

activate application "ScreenSaverEngine"

delay tiempo

tell application "System Events" to sleep

Donde la línea activate application "ScreenSaverEngine" activa el salvapantallas.

Guarda el script como una aplicación y ejecútala cuando necesites enviar a dormir el ordenador dentro de un tiempo prefijado.

0 0 votos
Article Rating
Subscribe
Notify of
5 Comments
Oldest
Newest Most Voted
Opiniones Inline
Ver todos los comentarios
Anónimo
Anónimo
14 years ago

Mira, llevaba tiempo intentando averiguar como solucionar este problema. Muchas gracias, el truco funciona y es muy, muy bueno.

Anónimo
Anónimo
14 years ago

En primer lugar agradecer el gesto y la rapidez de vuestra respuesta. Agradezco de todo corazón el tiempo que habéis invertido, así como los esfuerzos. Mi más sincero agradecimiento.
Deseo que seas varios los lectores a los que este truco les pueda venir bien, y así se amortice vuestro trabajo.

Ahora mismo voy a crear ese script que sin duda me viene de perlas.

Una vez más, gracias !
A vuestra disposición….

Anónimo
Anónimo
14 years ago

Yo les escribí una vez con un problema con mi iMac, no sacaron un artículo pero me respondieron superrápido con dos enlaces a faq-mac de artículos anteriores que me solucionaron el problema. Y no era precisamente una perita en dulce.

Hay que reconocer que son la web mas atenta con los lectores: anda, vete a preguntar a otro lado y si tienes suerte te responderán que o no son un consultorio o que lo lleves al servicio técnico. O que uses las búsquedas.

Maquito
Maquito
14 years ago

Un buen truco

meyocr
meyocr
13 years ago

La idea es buenísima, pero me gustaría saber como sería en el caso de que el temporizador se quisiese fuera de apagado en vez de reposo, cómo se modificaría el código del script?

5
0
Me encantaría saber tu opinión, por favor, deja un comentariox
()
x