web-dev-qa-db-ja.com

スクリプトを使用してVNCパスワードを割り当てる

スクリプトを使用してコンピューターを自動的にセットアップしています。ユーザーのvncサーバーにパスワードを割り当てる必要があります。これは通常、vncserverコマンドを使用して行われます。ただし、ユーザーにパスワードの入力と再入力を求めるプロンプトが出されますが、どちらもスクリプトでは実行できません。それで、どのようにインタラクティブなプロンプトなしでVNCパスワードを設定できますか?

ありがとう。

7
William

私の知る限り、vncserverコマンドは、パスワードファイル(デフォルトでは$ HOME/.vnc/passwd)が存在しない場合(通常は特定のユーザーに対して初めて実行された場合)にのみパスワードの入力を求めます。 「expect」を使用して最初のvncserverインタラクションをスクリプト化するか、expect beforeを使用してvncpasswdユーティリティを呼び出してユーザーのパスワードファイルを事前に作成します。例えば[注意:これは絶対に最小限です。これが深刻な環境で使用される場合、いくつかの健全性チェックを追加する必要があります]

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

'expect'を使用したくない(または使用できない)場合、Webでさまざまなハッキングが利用可能です。VNCパスワードは明らかにDES暗号化の形式を使用しているため、 'VNC '' DES '' password 'は、必要なものを取得します(特定のものを保証できないため、ここではリンクしません)。

完全を期すために、デフォルトのUbuntu「デスクトップ共有」ではvinoが使用され、thatのパスワードは単にbase64でエンコードされているように見えるため、直接設定することができます。

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

お役に立てれば

8
steeldriver

スクリプトでこれを行う別の方法を(ルートとして)見つけました:

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

乾杯!

4
Asimov

今日、この方法で(少なくともdockerfileから)それを行うことができました:

RUN printf "password\npassword\n\n" | vncpasswd
3
coding

steeldriverのバージョン を少し変更することで、vncpasswdの使用を自動化できました。作成するvncpasswdのパスワードとファイル名の両方を渡すことができます。

使用法:$ ./scriptname <filename> <password>

#!/bin/sh    

myuser="$1"
mypass="$2"

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