/etc/network/if-up.d script com prompt de senha

0

Eu quero um script que me conecte quando um uplink de interface específico for estabelecido (LAN da universidade).

O problema é que não quero codificar minha senha no script. Existe alguma maneira de solicitar uma senha em um script em if-up.d ?

Por exemplo, isso não funciona porque não há um conjunto de variáveis DISPLAY (definir um não ajuda):

# create temp file to store password
tmp='tempfile'

xterm -e /bin/bash -c "read -s -p \"Enter password: \" mypassword; echo \"\$mypassword\" > $tmp"

# read in password and delete temp file
mypassword='cat $tmp'
rm -f $tmp
echo $mypassword
    
por KIT-Inwi 21.11.2014 / 23:33

1 resposta

0

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.

    
por CameronNemo 22.11.2014 / 18:29