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.