Ok, então você deve fazer duas coisas: adicionar um aviso ao iniciar a sessão da área de trabalho, pedir sua senha e fazer uma solicitação toda vez que a interface for ativada novamente.
Portanto, você precisará usar uma tarefa Upstart session para garantir que uma sessão X é iniciada e a variável DISPLAY está configurada. Os trabalhos de sessão entram em ~/.config/upstart/
, não /etc/init/
e são executados como um usuário não raiz. Você precisará certificar-se de que suas sessões de desktop usem o Upstart como um init de sessão. Unity definitivamente faz isso, alguns outros sabores do Ubuntu também. Apenas execute initctl list-sessions
para ver se você tem alguma sessão do Upstart iniciada para contar.
De qualquer forma, aqui está o trabalho da sessão a ser usado:
# change IFACE= to whatever interface it is, unless it is all interfaces.
# in that case just omit the IFACE=
start on desktop-start or :sys:net-device-up IFACE=eth99
task
# put your script in this location
exec /usr/local/bin/unilan-password
Além disso, você provavelmente desejará usar o Zenity para solicitar ao usuário, não um xterm. O seguinte pode ser usado em vez do comando bash:
mypassword=$(zenity --entry --text="Enter University LAN password" --hide-text)
$ (comando) é apenas uma maneira mais agradável de fazer a substituição de comando do que command
, se você não o reconheceu. Certifique-se de ter o pacote zenity
instalado, é claro.