Atribuir senha VNC usando script

6

Estou usando um script para configurar automaticamente um computador. Eu preciso atribuir uma senha para o servidor vnc para o usuário, o que normalmente é feito usando o comando vncserver . No entanto, ele solicita que o usuário insira e insira novamente sua senha, nenhuma das quais o script é capaz de fazer. Então, como posso configurar a senha do VNC sem um prompt interativo?

Obrigado.

    
por William 03.08.2013 / 16:54

4 respostas

6

Até onde eu sei, o comando vncserver apenas solicita uma senha se o arquivo de senha (por padrão, $ HOME / .vnc / passwd) estiver ausente - normalmente na primeira vez que for executado para um usuário em particular. Você pode criar scripts para essa interação inicial do vncserver usando 'esperar' ou pré-criar o arquivo de senhas do usuário chamando o utilitário vncpasswd via antes de executar o vncserver pela primeira vez; por exemplo. [CUIDADO: isso é absolutamente mínimo, você deve adicionar algumas verificações de integridade se isso for usado em um ambiente sério]

#!/bin/sh

prog=/usr/bin/vncpasswd
mypass="newpass"

/usr/bin/expect <<EOF
spawn "$prog"
expect "Password:"
send "$mypass\r"
expect "Verify:"
send "$mypass\r"
expect eof
exit
EOF

Se você não quiser (ou não pode) usar 'esperar', então existem vários hacks disponíveis na web - senhas VNC aparentemente usam uma forma de criptografia DES, então pesquisando com os termos 'VNC' 'DES '' password 'deve te dar o que você precisa (eu não vou linkar aqui já que eu não posso garantir nenhum em particular).

Para completar, note que o padrão 'Desktop Sharing' do Ubuntu usa vino, e a senha para que parece ser simplesmente codificada em base64, então é possível configurá-la diretamente, por exemplo

gsettings set org.gnome.Vino vnc-password "$(echo -n "newpass" | base64)"

Espero que isso ajude

    
por steeldriver 03.08.2013 / 21:44
3

Eu encontrei outra maneira de fazer isso em um script (como root):

#!/bin/sh    

myuser="asimov"
mypasswd="mysecret"

mkdir /home/$myuser/.vnc
echo $mypasswd | vncpasswd -f > /home/$myuser/.vnc/passwd
chown -R $myuser:$myuser /home/$myuser/.vnc
chmod 0600 /home/$myuser/.vnc/passwd

Felicidades!

    
por Asimov 24.03.2016 / 21:46
2

Conseguiu fazer isso hoje (pelo menos a partir de um dockerfile):

RUN printf "password\npassword\n\n" | vncpasswd
    
por coding 02.01.2015 / 22:17
1

Modificando levemente a versão do steeldriver , consegui automatizar meu uso do vncpasswd. Permite passar a senha e o nome do arquivo para o vncpasswd criar.

Uso: $ ./scriptname <filename> <password>

#!/bin/sh    

myuser=""
mypass=""

/usr/bin/expect <<EOF
spawn /usr/bin/vncpasswd $myuser
expect "Password:"
send "$mypass\r"
expect "Verify:"
send "$mypass\r"
expect eof
exit
EOF
    
por Mike J 13.11.2016 / 07:29