Eu não tenho o vncserver, então, lendo a página de manual pela web e não tenho como testar ...
Você tentou escrever a senha duas vezes em um arquivo temporário e usar essa senha como stdin para vncpasswd?
echo $password >/tmp/file
echo $password >>/tmp/file # note >> for append
vncpasswd </tmp/file >/tmp/vncpasswd.1 2>/tmp/vncpasswd.2
Isso é para o shell bash. Mas a ideia básica deveria ser óbvia. A solicitação será encerrada no arquivo .1 e os erros no arquivo .2