Soweit ich weiß, fordert der Befehl vncserver nur dann zur Eingabe eines Kennworts auf, wenn die Kennwortdatei (standardmäßig $ HOME / .vnc / passwd) fehlt - normalerweise das erste Mal, wenn sie für einen bestimmten Benutzer ausgeführt wird. Sie können diese anfängliche vncserver-Interaktion entweder mit 'erwarten' skripten oder die Kennwortdatei des Benutzers vorab erstellen, indem Sie das Dienstprogramm vncpasswd über "erwarten" aufrufen, bevor Sie vncserver zum ersten Mal ausführen. zB [VORSICHT: Dies ist absolut minimal. Sie sollten einige Sicherheitsüberprüfungen hinzufügen, wenn dies in einer ernsthaften Umgebung verwendet wird.]
#!/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
Wenn Sie "erwarten" nicht verwenden möchten (oder können), stehen im Web verschiedene Hacks zur Verfügung. VNC-Kennwörter verwenden anscheinend eine Form der DES-Verschlüsselung, sodass Sie mit den Begriffen "VNC", "DES" -Kennwort suchen Ich sollte dir das besorgen, was du brauchst (ich werde hier nicht verlinken, da ich nicht für einen bestimmten bürgen kann).
Für Vollständigkeit, beachten Sie, dass der Standard - Ubuntu ‚Desktop Sharing‘ Anwendungen vino, und das Passwort für die, dass erscheint einfach Base64 codiert zu werden, so dass es möglich ist , es direkt zu setzen zB
gsettings set org.gnome.Vino vnc-password "$(echo -n "newpass" | base64)"
Hoffe das hilft
Konnte es heute so machen (zumindest aus einer Docker-Datei):
quelle
su
und es funktioniert auch dort, dhsu -l -c 'printf "password\npassword\n\n" | vncpasswd' username
sudo printf "password\npassword\n\n" | vnc4passwd
Durch geringfügige Änderung der Version von steeldriver konnte ich die Verwendung von vncpasswd automatisieren. Ermöglicht die Übergabe des Kennworts und des Dateinamens für vncpasswd.
Verwendungszweck:
$ ./scriptname <filename> <password>
quelle