Automating VNC authorization process through command line

20.8k views Asked by At

I am receiving a input as vnc://172.16.41.101&passwd=test

What i want to do with this input is :
1. Extract the IP address.
2. Extract the password.
3. Launch vncviewer with the ip and password provided.
4. All this should this be automated, once the input is received.

extracting the ip and password is easy. then i launch the vncviewer with the ip provided, but how do i pass the password to that without prompting the user for the password ?

4

There are 4 answers

0
BuvinJ On

Without more detail provided, it's hard to answer this perfectly, e.g. to post the code / commands / configurations to achieve what I'd suggest... For instance, you'd need to specific exactly which vnc server, client, the platform for each side, etc, etc.

That said, if you can redesign how all of this works - I recommend not using a password at all!

Instead, setup an SSH Tunnel, and use key pair authentication to secure it. You can even remove any firewall exceptions for VNC when using this plan!

If you do this, not only will you not have to provide a password, but the entire VNC system will be far more secure!

0
NVRM On

The -autopass was unavailable in my version of vncviewer.

Neither the tool vncpasswd (Apparently comes with vnc-server).


Demo using xvfb, x11vnc, run the program gimp, if installed, in a virtual X env.

And display with vncviewer without prompting for a password.

x11vnc -storepasswd 1234 /tmp/vncpass
xvfb-run --listen-tcp --server-num 30 --auth-file /tmp/xvfb.auth -s "-ac -screen 0 1920x1080x24" gimp
x11vnc -rfbport 4544 -rfbauth /tmp/vncpass -display :30 -forever -auth /tmp/xvfb.auth
vncviewer -passwd /tmp/vncpass machine:4544

One liner:

x11vnc -storepasswd 1234 /tmp/vncpass && xvfb-run --listen-tcp --server-num 30 --auth-file /tmp/xvfb.auth -s "-ac -screen 0 1920x1080x24" gimp & x11vnc -rfbport 4544 -rfbauth /tmp/vncpass -display :30 -forever -auth /tmp/xvfb.auth & vncviewer -passwd /tmp/vncpass $(hostname):4544
1
Albert Peschar On

If your vncviewer does not have the -autopass option, you can use vncpasswd to generate a password file that can be passed into the -passwd option:

vncviewer -passwd <(vncpasswd -f <<<"password") host:display
3
Bruno Flávio On

Assuming (by the tags) that you are using the vncviewer program from the command-prompt i think you could do something like this:

echo "password" | vncviewer -autopass host:display

using your example: vnc://172.16.41.101&passwd=test

echo "test" | vncviewer -autopass 172.16.41.101