Desde la LSPM: Apagar el Mac mediante la inserción de una memoria USB con AppleScript, por Juan de Dios Santander

Script_Editor_big_Icon.jpgHace ya bastante tiempo, se preguntó lo siguiente en la LSPM: "Como voy a tener un Mac Mini enchufado principalmente para funciones P2P, voy a intentar manejarlo por acceso remoto, pero esto puede crear algún inconveniente cuando quiera dejarlo funcionando y tenga que ser otra persona quien apague el ordenador de la red eléctrica . No creo que pueda enseñarle cómo hacerlo remotamente, pero también sería mucho más cómodo no depender de un segundo ordenador para apagar el Mini. Por eso me venía preguntando si habría manera de programar algún _script_ autoarrancable desde una memoria USB que hiciese de "interruptor", y que al insertarlo en el puerto USB éste "enviase" una orden reconocible para que el Mini se apagase."

La primera respuesta es que un sistema así causaría un serio problema de seguridad en cualquier ordenador: insertar un "USB de la muerte" apagaría cualquier Mac en el que lo insertásemos, y evidentemente no sería de recibo. ¿Qué podríamos hacer para que se pudiese hacer ese apagado de forma segura?

Una posible solución es crear un archivo con un nombre determinado en la llave USB, por ejemplo ApagarMacMini.txt en el primer nivel de una memoria USB que se llame LlaveApagado. Si activamos en LlaveApagado las Acciones de Carpeta (por ejemplo, con el menú de contexto del Finder, en la opción Más > Configurar Acciones de Carpeta). Se podía añadir una acción para el caso de que hubiera contenido nuevo en la carpeta /Volumes, y si ese contenido nuevo es LlaveApagado, lanzar un AppleScript para apagar el equipo.

Una forma que puede tener ese AppleScript es la siguiente:

do shell script "shutdown" user name "usuario" password "contraseña" with administrator privileges

Donde usuario es un usuario administrador de la máquina, y contraseña es su contraseña correspondiente. Pero esto sólo resuelve el problema del apagado: ¿cómo estamos pendientes de que se ha incluido la unidad Flash que buscamos, con el archivo que determina el apagado?

Podemos asignar una acción de carpeta a la carpeta /Volumes para comprobar cuándo cambia, porque es en esta carpeta donde se montan las diferentes unidades. Para ello, podemos ir a /Volumes con el menú Ir > Ir a la carepeta… del Finder. Una vez en esa carpeta, podemos elegir el menú contextual del Finder Más > Configurar acciones de carpeta.

Con Configurar acciones de carpeta abierta, asignamos el siguiente script, que habremos llamado DetectarUSBcierre.scpt, y que habremos guardado con el Editor de Scripts en /Library/Scripts/Folder Action Scripts:

on adding folder items to this_folder after receiving added_items

    try

        tell application "System Events"

            if exists file "/Volumes/LlaveUSBCierre/ApagarEquipo.txt" then

                do shell script "shutdown" user name "usuario" password "contraseña" with administrator privileges

            end if

        end tell

    end try

end adding folder items to

El resultado en Editor de Scripts tras darle al botón Compilar debe ser así:

Programa AppleScript para detectar si se ha añadido una memoria USB determinada que contenga un archivo determinado, y cierre el ordenador en Mac OS X

Hay que tener cuidado al copiar las comillas, que deben ser comillas simples ("). Podemos también descargar el script casi listo para descargar haciendo clic sobre la imagen; hay que descomprimirlo, editar el nombre de usuario y contraseña, y moverlo a /Library/Scripts/Folder Action Scripts.

Y este es el pantallazo de cómo queda Configurar acciones de carpeta tras haber activado las Acciones de carpeta (casilla superior), añadido la carpeta /Volumes, y la acción DetectarUSBCierre.scpt para la carpeta /Volumes.

Configuració de las acciones de carpeta para Volumes

Una vez configurado, bastará con introducir nuestra memoria USB, que deberá llamarse, tal y como hemos especificado, LlaveUSBCierre, y que debe contener un archivo ApagarEquipo.txt en el nivel _más alto_ de dicha memoria.

Probando el sistema

Si queremos probar el funcionamiento del sistema sin apagar el equipo, podemos cambiar esta línea:

do shell script "shutdown" user name "usuario" password "contraseña" with administrator privileges

por esta otra:

display dialog "Acaba de insertarse la memoria USB LlaveUSBCierre que incorpora el fichero para el apagado" buttons {"OK"} default button 1 giving up after 30

que mostrará un aviso sí y solo si se inserta la LlaveUSBCierre con el archivo correspondiente, pero no iniciará ningún apagado.

Otros usos

Por supuesto, la idea de apagar el ordenador con un AppleScript ya autorizado permite que cualquier aplicación que pueda lanzar _scripts_ tenga acceso al apagado incondicional del ordenador. Un ejemplo podría ser usar una aplicación como Proximity para apagar un ordenador si un determinado móvil Bluetooth se acerca (puede ser una broma pesada, o una medida de protección ;-)), o programar alguna regla de Mail para apagarlo todo. Éste último ejemplo lo detalla muy bien Macnolo Santana en su bitácora Zarachrome: "Apagar el Mac a distancia"

Posibles modificaciones

Puede que todas nuestras memorias USB se llamen igual, o que queramos que se apaguen diferentes equipos con diferentes memorias. Se puede cambiar el AppleScript para que se busquen diferentes archivos o diferentes nombres de memoria USB, o diferentes archivos independientemente del nombre de la memoria. También podemos usar diferentes nombres de archivo en diferentes ordenadores, y tener una "memoria maestra" que incluya todos los archivos que buscan los diferentes ordenadores (tendrían que tener un nombre creativo, o relacionado con cada ordenador, para que no sea fácil de replicar).

Otra modificación es añadir antes del comando do shell script algo como tell application "Finder" to beep, o lanzar la reproducción de algún sonido específico, o incluso usar tell app "System Events" to say "Shutting down computer." para que tengamos realimentación sonora de que, efectivamente, ha comenzado el apagado.

Un artículo de Juan de Dios Santander en Memoria de Acceso Aleatorio


Enviar un comentario nuevo

El contenido de este campo se mantiene como privado y no se muestra públicamente.
CAPTCHA
Este servicio evita el envío automatizado de comentarios
9 + 0 =
Solucione este simple problema matemático y añada el resultado. Ejemplo: 3+1 es igual a 4

Los comentarios que vulneren los derechos de otros usuarios, estén relacionados con actividades ilegales , supongan un claro ejemplo de interés comercial o sean ajenos al contenido de la noticia serán borrados sin aviso previo. Una buena ortografía y sintaxis ayudará a otros usuarios a entender mucho mejor sus inquietudes. Una vez enviado el comentario, se hará visible en unos minutos. Si cree que alguno de los comentarios publicados vulnera sus derechos, por favor, envíenos unas líneas a través de nuestro formulario de contacto. Al colocar un comentario en esta web, acepta que sus datos queden recogidos en una base de datos propiedad de Entremaqueros, SL., ubicada en EE.UU., cuya finalidad es el exclusivo almacenamiento de los mismos.


Necesitará iniciar sesión o registrarse para publicar comentarios o acceder a otros servicios de www.faq-mac.com