Mostrar caixa de diálogo no login (script bash)


2

A idéia é que quando alguém fizer login no meu Mac, um pop-up será exibido e a data / hora serão gravadas em um log.

Eu executo o script bash a partir de um trabalho cron:

 @reboot ~/Develop/login.sh 

(Eu sei sobre o launchd, mas opto por usar o cron, muito mais fácil)

o 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

Eu posso executar o script com ./login.sh. Tudo funcionando bem, a caixa de diálogo é mostrada e o tempo de login é gravado no log.

Porém, ao reiniciar o Mac, a data / hora do logon é gravada no arquivo (para que o trabalho cron esteja funcionando), mas a caixa de diálogo não aparece.

(Eu olhei para a pergunta Run AppleScript from bash script )

Então, minha pergunta é como mostrar essa caixa de diálogo ao reiniciar o meu Mac? (macOS 10.12.3)


Suponho que você conheça o comando "last" - apenas para garantir que não é isso que você deseja. Além disso, eu usaria "syslog" para monitorar logins de usuários. Veja, por exemplo, unix.stackexchange.com/questions/143864/…
user2707001 15/17

Não, o problema é que a caixa de diálogo não é exibida após uma reinicialização.
Mick dK

Só por curiosidade ... por que você está permitindo que outras pessoas façam logon em primeiro lugar?
Allan

Preferiria não discutir isso aqui
Mick dK

3
Embora não seja exato, é uma possível duplicata de como iniciar um servidor mysql no login . A relevância é que esta pergunta faça a mesma coisa: como executar um script no login .
Allan

Respostas:


0

Você deve executar seu script acima, não como um trabalho cron, mas como descrito nesta postagem (*):

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

Certifique-se de não confundir as coisas em execução na tela de login e as coisas em login do usuário, como na pergunta abaixo:

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

Ainda assim, não é necessário registrar logins de usuários, pois eles são registrados automaticamente. Veja "man last" e "cat /var/log/authd.log".

(*) Parte relevante da postagem vinculada acima - ou use o launchd, conforme descrito no link

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

É melhor colocar os bits relevantes aqui e depois postar um link para mais referências. Os links geralmente ficam obsoletos, tornando a resposta inútil.
21417 Allan

É isso, obrigado. Afinal, o trabalho cron não pode ser usado para o que eu queria e preciso usar o launchd conforme descrito no primeiro link.
Mick dK

Desculpe, não tenho reputação suficiente para votar acima #
Mick dK 22/02

1

Você não deve precisar de Eventos do Sistema apenas para exibir uma caixa de diálogo, nem estritamente falando 'ativá-la' ...
tente apenas

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

Eu realmente não posso testá-lo, pois sou totalmente ignorante no cron / bash / osascript, mas isso seria tudo o que você precisaria para um Applescript comum exibir um diálogo.

Se isso não funcionar, o próximo passo seria configurá-lo no Automator, como um aplicativo, e depois iniciar o logon.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.