2 votes

Afficher le dialogue à la connexion (bash script)

L'idée est que lorsque quelqu'un se connecte à mon Mac, une popup s'affiche et la date et l'heure sont écrites dans un journal.

J'exécute le bash script à partir d'un travail cron :

 @reboot ~/Develop/login.sh 

(Je connais launchd mais j'ai choisi d'utiliser cron, beaucoup plus facile).

le 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

Je peux exécuter le script avec ./login.sh. Tout fonctionne bien, le dialogue est affiché et l'heure de connexion est écrite dans le journal.

Mais lorsque je redémarre mon Mac, la date et l'heure de connexion sont écrites dans le fichier (la tâche cron fonctionne donc), mais la boîte de dialogue ne s'affiche pas.

(J'ai regardé la question Exécuter AppleScript depuis bash script )

Ma question est donc la suivante : comment afficher cette boîte de dialogue lors du redémarrage de mon Mac ? (MacOS 10.12.3)

1voto

Tetsujin Points 95239

Vous ne devriez pas avoir besoin d'événements système pour afficher un dialogue, et vous ne pouvez pas non plus l'"activer" à proprement parler...
essayez juste

#!/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

Je ne peux pas vraiment le tester car je ne connais rien à cron/bash/osascript, mais c'est tout ce dont vous avez besoin pour qu'un Applescript normal affiche un dialogue.

Si cela ne fonctionne pas, l'étape suivante consisterait à le configurer dans Automator, en tant qu'application, puis à le configurer pour qu'il soit lancé à la connexion.

0voto

Arran McDonald Points 11

Vous devez exécuter votre script ci-dessus non pas comme une tâche cron mais comme décrit dans ce post (*) :

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

Veillez à ne pas confondre l'exécution de tâches sur l'écran de connexion et l'exécution de tâches lors de la connexion de l'utilisateur, comme dans la question ci-dessous :

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

Néanmoins, il n'est pas nécessaire que vous enregistriez les connexions des utilisateurs car elles sont automatiquement enregistrées. Voir "man last" et "cat /var/log/authd.log".

(*) Partie pertinente de l'article ci-dessus - ou utiliser launchd, comme décrit dans le lien.

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

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X