2 votos

Mostrar diálogo en el inicio de sesión (bash script)

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

Ejecuto el bash script desde un trabajo cron:

 @reboot ~/Develop/login.sh 

(Conozco el launchd pero opto por usar el cron, mucho más fácil)

el login.sh script:

#!/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, el diálogo se muestra y la hora 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 diálogo no aparece.

(He mirado la pregunta Ejecutar AppleScript desde bash script )

Así que mi pregunta es cómo mostrar este diálogo al reiniciar mi Mac? (MacOS 10.12.3)

0 votos

Supongo que conoces el comando "last" - sólo para asegurarte de que no es lo que quieres. Además, yo usaría "syslog" para monitorear los inicios de sesión de los usuarios. Ver por ejemplo unix.stackexchange.com/questions/143864/

0 votos

No, el problema es que el diálogo no se muestra después de un reinicio

0 votos

Sólo por curiosidad... ¿por qué permites que otras personas se conecten en primer lugar?

1voto

Tetsujin Puntos 23061

No debería necesitar Eventos del Sistema sólo para mostrar un diálogo, ni tampoco puede estrictamente "activarlo"...
intente sólo

#!/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 en sí, pero eso sería todo lo que necesitas para que un Applescript normal muestre un diálogo.

Si eso no funciona, entonces el siguiente paso sería configurarlo en Automator, como una Aplicación, y luego configurarlo para que se lance al iniciar la sesión.

0voto

Arran McDonald Puntos 11

Debes ejecutar tu script anterior no como un trabajo cron sino como se describe en este post (*) :

https://stackoverflow.com/questions/6442364/running-script-upon-login-mac

Asegúrese de no confundir la ejecución de cosas en la pantalla de inicio de sesión con la ejecución de cosas en el inicio de sesión del usuario, como en la siguiente pregunta:

https://stackoverflow.com/questions/22842016/launch-shell-script-on-login-in-mac-os-x?noredirect=1&lq=1

Aun así, no es necesario que registre los inicios de sesión de los usuarios, ya que se registran automáticamente. Consulte "man last" y "cat /var/log/authd.log".

(*) Parte relevante del post enlazado más arriba - o utilizar 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

0 votos

Es mejor poner las partes relevantes aquí y luego publicar un enlace para obtener más referencias. Los enlaces a menudo se quedan obsoletos, lo que hace que la respuesta sea inútil.

0 votos

Eso es todo, gracias. Después de todo el trabajo cron no es utilizable para lo que quería y necesito usar launchd como se describe en el primer enlace.

0 votos

Lo siento, no tengo la suficiente reputación para votar a favor

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