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?
0 votos
Preferiría no discutir eso aquí
0 votos
Sólo para que te entienda bien, ¿quieres que el diálogo aparezca cuando el ordenador se reinicie, NO cuando intentes iniciar sesión? - porque eso es lo que intentas hacer con el código de arriba. Quieres que aparezca una ventana emergente sin que el usuario haya iniciado la sesión, ¿verdad? Puede establecer el mensaje mostrado en las preferencias, pero eso no es un popup, vea support.apple.com/es-us/HT203580 . Los eventos del sistema no están disponibles en la pantalla de inicio de sesión de la forma en que lo intentas creo.
0 votos
No, después de iniciar la sesión. Utilizo la palabra reiniciar porque es cuando se ejecuta el trabajo cron
0 votos
Exactamente - el reinicio es cuando el trabajo cron se está ejecutando. Antes del inicio de sesión. Ese es el problema.
0 votos
Si quieres hacer esto en el inicio de sesión tiene que hacer que se ejecute como un "elemento de inicio" o utilizar
launchd
.cron
sólo funciona en intervalos de tiempo, no en eventos como que alguien se registre en una máquina.3 votos
Aunque no es exacto, es un posible duplicado de cómo iniciar un servidor mysql al iniciar sesión . La relevancia es que esta pregunta hace lo mismo: cómo ejecutar un script al iniciar la sesión .
0 votos
La cuestión es cómo llevar a cabo una script no un aplicación . Eso es algo diferente, la solución en el enlace no funcionará. Pero debería cambiarse el nombre a "en el inicio de sesión" en lugar de "en el reinicio".
0 votos
@user2707001 - no hay diferencia entre ejecutar un script o una aplicación a través de
launchd
.