Mostrar diálogo al iniciar sesión (script bash)

2

La idea es que cuando alguien inicie sesión en mi Mac, aparecerá una ventana emergente y la fecha / hora se escribirán en un registro.

Ejecuto el script bash desde un trabajo cron:

 @reboot ~/Develop/login.sh 

(Sé sobre launchd pero elijo usar cron, mucho más fácil)

el script login.sh:

#!/bin/bash
osascript <<EOD
  tell application "System Events"
  activate
  display dialog "Unauthorized Login" buttons {"OK"} default button 1 with icon caution with title "WARNING!"
  end tell
EOD

echo "$(date) LogIn Alert" >> ~/Develop/login.log

Puedo ejecutar el script con ./login.sh. Todo funciona bien, se muestra el cuadro de diálogo y el tiempo de inicio de sesión se escribe en el registro.

Pero al reiniciar mi Mac, la fecha / hora de inicio de sesión se escribe en el archivo (por lo que el trabajo cron está funcionando), pero el cuadro de diálogo no aparece.

(Miré la pregunta Ejecutar AppleScript desde el script bash )

¿Entonces mi pregunta es cómo mostrar este cuadro de diálogo al reiniciar mi Mac? (macOS 10.12.3)

    
pregunta Mick dK 15.02.2017 - 07:00

2 respuestas

0

Debe ejecutar su secuencia de comandos arriba, no como un trabajo cron, sino como se describe en esta publicación (*):

enlace

Asegúrese de no confundir el funcionamiento de la pantalla de inicio de sesión y el inicio de sesión del usuario como en la pregunta a continuación:

enlace

Aún así, no es necesario que inicie sesión en los inicios de sesión del usuario ya que se registran automáticamente. Ver "man last" y "cat /var/log/authd.log".

(*) Parte relevante de la publicación vinculada arriba - o use launchd, como se describe en el enlace

start Automator.app
Select "Application"
click "Show library" in the toolbar (if hidden)
Add "Run shell script" (from the Actions/Utilities)
Copy&paste your script into the window
Test it
Save somewhere, for example you can make an "Applications" folder in your HOME (you will get an your_name.app)
Go to System Preferences -> Accounts -> Login items
Add this app
    
respondido por el user2707001 15.02.2017 - 13:45
2

No debería necesitar eventos del sistema solo para mostrar un cuadro de diálogo, ni puede, estrictamente hablando, 'activarlo' ...
prueba solo

#!/bin/bash
osascript <<EOD
  tell me to display dialog "Unauthorized Login" buttons {"OK"} default button 1 with icon caution with title "WARNING!"
EOD

echo "$(date) LogIn Alert" >> ~/Develop/login.log

Realmente no puedo probarlo, ya que no tengo ni idea de cron / bash / osascript, pero eso sería todo lo que necesitarías para un Applescript regular para mostrar un diálogo.

Si eso no funciona, el siguiente paso sería configurarlo en Automator, como una aplicación, y luego configurarlo para iniciar sesión al iniciar sesión.

    
respondido por el Tetsujin 15.02.2017 - 07:20

Lea otras preguntas en las etiquetas