スクリプトを使用してコンピューターを自動的にセットアップしています。ユーザーのvncサーバーにパスワードを割り当てる必要があります。これは通常、vncserver
コマンドを使用して行われます。ただし、ユーザーにパスワードの入力と再入力を求めるプロンプトが出されますが、どちらもスクリプトでは実行できません。それで、どのようにインタラクティブなプロンプトなしでVNCパスワードを設定できますか?
ありがとう。
私の知る限り、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)"
お役に立てれば
スクリプトでこれを行う別の方法を(ルートとして)見つけました:
#!/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
乾杯!
今日、この方法で(少なくともdockerfileから)それを行うことができました:
RUN printf "password\npassword\n\n" | vncpasswd
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