1 votos

¿Herramienta de línea de comandos para comprobar si el usuario actual tiene el escritorio?

¿Existe una forma, a través de la línea de comandos, de comprobar si el usuario actual tiene el escritorio? Es decir, si ejecuto un shell script en una ventana, quiero poder saber (en el script) si el usuario ha cambiado de cuenta a través de Fast User Switching. El shell script sigue ejecutándose en esa ventana de comandos, pero como el usuario ha cambiado de cuenta, el Escritorio no muestra esa ventana de comandos.

Comparto mi Mac con mi esposa, y cada uno tiene su propia cuenta. Cuando ella se sienta en el ordenador, cambia a su cuenta. Quiero escribir un programa en Python que se ejecute 24/7 en mi cuenta. Quiero que ese programa sepa cuando mi mujer está en el ordenador y ha cambiado a su cuenta.

Espero estar explicando esto claramente. He buscado en Google durante 20 minutos antes de rendirme, ya que ninguno de los resultados de la búsqueda se acercaba a lo que intentaba encontrar. Ni siquiera sé cómo formular la pregunta correctamente.

0voto

hjdm Puntos 18

Puedes comprobar quién tiene la "consola" con el comando:

ps aux | grep console | grep -v grep | awk '{ print $1 }'

0voto

jherran Puntos 6511

Puede hacerlo si crea un "gancho de inicio de sesión". Un gancho de inicio de sesión indica a Mac OS X que ejecute un determinado script cuando un usuario inicie sesión. A diferencia de los Elementos de inicio que se abren cuando un usuario inicia sesión, un gancho de inicio de sesión es un script que se ejecuta como Root.

Con un gancho de acceso:

  • El script especificado como gancho de inicio de sesión debe ser ejecutable.
  • El hook de inicio de sesión se ejecutará como Root.
  • En el hook de inicio de sesión script, la variable $1 devuelve el nombre corto del usuario que está iniciando la sesión.
  • Otras acciones de inicio de sesión esperan hasta que el gancho se haya ejecutado completamente.

Cómo configurar un gancho de inicio de sesión

  1. Abrir Terminal (Aplicaciones/Utilidades).

  2. En la ventana del Terminal, escriba:

    sudo defaults write com.apple.loginwindow LoginHook /path/to/script

    (donde /path/to/script es la ruta completa del script que desea ejecutar cuando un usuario se conecta - no tiene que estar en el directorio de inicio del usuario).

    Esto modifica el /var/root/Library/Preferences/com.apple.loginwindow archivo.

  3. Escriba su contraseña en el indicador, y luego presione Retorno.

Artículo completo en la página de soporte de Apple: Mac OS X: Creación de un gancho de inicio de sesión

0voto

madhead Puntos 191

Vale, creo que lo he descubierto, pero no sé cómo funciona. La siguiente función de Python devuelve un valor cuando soy el login activo, y otro cuando no lo soy:

from Quartz import CGMainDisplayID
print CGMainDisplayID()

Todo lo que necesito hacer es almacenar el valor de CGMainDisplayID() cuando el scriptse ejecuta por primera vez, y luego llamarlo de nuevo cada vez que quiera ver si estoy cambiado. Si devuelve un valor diferente, entonces sé que estoy cambiado.

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