我正在编写一个脚本,用于在许多基于debian的设备上设置VNC(以及其他东西)。我想在这个设置中包括VNC(如果可能的话,具体来说是tightVNC),并让它设置一个给定的密码(由脚本随机生成)。问题是,我找到的每个指南似乎都假设有人在做这件事,并且准备坐下来输入密码并按enter键。我似乎不能让Bash回显密码到VNC(它总是说"密码太短"),也不能让"期望"正常工作。
我发现的一个示例指南是这样的:http://www.penguintutor.com/linux/tightvnc
我在找类似的东西:
#!/bin/bash
echo "Going to configure VNC"
#turn on vnc server
tightvncserver
#spit out password to vnc server for first run only
echo $password
#confirm the pw
echo $password
但是,每次首次运行tightvncserver时,它总是要求手动输入密码:
Going to configure VNC
You will require a password to access your desktops.
Password: Password too short
我怎么能#1绕过这个,或者#2使用bash/expect给它一个密码让它高兴?
# Configure VNC password
umask 0077 # use safe default permissions
mkdir -p "$HOME/.vnc" # create config directory
chmod go-rwx "$HOME/.vnc" # enforce safe permissions
vncpasswd -f <<<"$password" >"$HOME/.vnc/passwd" # generate and write a password
如果您的tightvnc的包装使用passwd
文件的~/.vnc/
以外的位置,请修改。
如果您有单独的仅查看密码和完全控制密码,则:
vncpasswd -f <<<"$full_password"$'n'"$view_password" >"$HOME/.vnc/passwd"
如果您需要与/bin/sh
兼容(或者不使用#!/bin/bash
shebangs),则改为:
vncpasswd -f >"$HOME/.vnc/passwd" <<EOF
$full_password
$view_password
EOF