432 2

Automatizar el cambio de usuarios en Mac OS X

AppleScript_Editor_Icon.jpgMac OS X cuenta con soporte para diferentes usuarios en un mismo ordenador, pero cambiar entre usuarios supone pasar por un cuadro de diálogo y escribir una contraseña. En ocasiones te gustaría automatizar este proceso, por ejemplo, para que el Mac cambiara a la cuenta de invitado cuando lleva un rato desatendido o para poder activar un usuario a una hora determinada. En este tutorial vamos a aprender como automatizar este cambio, usando comandos de Shell y algo de Applescript.

Para automatizar el cambio de usuario, rodeando las protecciones de seguridad impuestas por Apple, vamos a hacer una llamada externa a la aplicación que gestiona el cambio de usuarios usando el comando de Terminal (en Alicaciones > utilidades).

/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession -switchToUserID 502

Denotar que 502 es el ID de un usuario específico ya creado en nuestro ordenador, un número que es diferente para cada uno de ellos y que puedes consultar abriendo el Panel de Control de usuarios en Preferencias del Sistema, haciendo click con el botón alternativo del ratón para desplegr el menú contextual y abriendo el menú “opciones avanzadas”. Allí te aparecerá la ID de usuario que es el número que tienes que usar el el comando.

Por defecto, si ejecutamos el comando nos aparecerá el cuadro de diálogo de inicio de sesión de ese usuario en concreto listo para introducir la contraseña.

En el caso de la cuenta de invitado este número suele ser el 201 (los 500 están reservados para los administradores), así que para automatizar, por ejemplo, el cambio a la cuenta de invitado (que tiene que estar activada previamente en las preferencias de cuentas), el comando sería:

/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession -switchToUserID 201

Que nos haría saltar directamente a la cuenta de invitado.

Administradores

Para saltar a una cuenta con contraseña (de Administrador, o de otro tipo de usuario) la cosa varía un poco ya que necesitamos dos cosas: saber la contraseña (obviamente) y que Mac la teclee por nosotros. Para ello, en el Editor de Scripts añadiremos este texto:

do shell script “/System/Library/CoreServices/Menu\ Extras/User.menu/Contents/Resources/CGSession -switchToUserID 502”

tell application “System Events” to keystroke “contraseña”

tell application “System Events” to key code 36

end

En la primera parte del script, tal como hemos aprendido antes, hemos hecho la llamada al usuario en cuestión (en este caso, el 502). En la segunda parte estamos pidiendo al Mac que escriba la contraseña y luego, que pulse la tecla “Enter” para validar el cambio. Al usar la contraseña “en vivo” lo mejor es guardar este Applescript (o la correspondiente tarea de Automator, si lo hacemos con Automator) como una aplicación para evitar que nadie pueda controlar qué contraseña tiene la cuenta.

La ventaja de este sistema es que podemos llamar directamente a “un usuario” sin mostrar la lista completa de usuarios del Mac, pero si en algún momento lo que te interesa es simplemente “suspender” una cuenta y dejar el cuadro de diálogo que corresponde al inicio de sesión con todos los usuarios el comando es:

/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession -suspend

Para disparar este Applescript, por ejemplo, con el Salvapantallas tienes Scriptsaver que te permitirá, tras cierto tiempo de inactividad, que el Mac se cambie solo de usuario y siga estando disponible, por ejemplo, para el resto de gente que tiene acceso al ordenador.

2 Comments

  1. Anónimo

    Trucazo, si señor. Antes no paraba a leer estas cosas, pero un día buscando como hacer un Applescript tropecé con un truco de faq-mac y desde entonces no me pierdo ninguno, son cojonudos.

    Muchas gracias

Deja una respuesta