Maker tech hub — AI · 3D print · Pi · ESP32 · plus the classic tech archive.

Free ESP32 kit · Books · Network Ninja · Archive

Classic tech archive. From the original averyjparker.com tech blog — historical context; pair with modern guides where noted. Full archive · Maker projects · Network Ninja

Classic tip · Classic

Remote Tech Support with x11vnc and wrapper script

So, the idea is that I wanted something "like" the Ultranvnc Single Click download, only for linux. The main idea being is that if someone is looking for a bit of desktop tech support on linux, we do…

Written by

Avery J. Parker

IT veteran, maker educator, and author of Network Ninja, 3D Printing Mastery, and AI Workflow Mastery. Business IT: Diversified Tech Solutions.

So, the idea is that I wanted something "like" the Ultranvnc Single Click download, only for linux. The main idea being is that if someone is looking for a bit of desktop tech support on linux, we don't need to be giving instructions for 5 different package managers, or source compilation, or anything more than MAYBE something to cut and paste. In fact, something like this.... wget http://www.mysite.com/remote-support && sh remote-support could be easily pasted into a console window (which hopefully we can give instructions on finding), or a run command in kde for instance. Then the remote-support script should do the rest. *(By the way, the script doesn't have to be chmod'ed to executable when we use sh to invoke it...)


So, basically this is what I've got for the script right now - addresses changed.....

#!/bin/bash



X11VNCDOWNLOAD=http://www.mywebsite.com/x11vnc

#where are we going to get our vnc server from



REMOTEVIEWER=the.helpdesk.machine.com

#this is where the support tech is waiting
# "listening" for the connection



TIMEOUT=5


#we don't want the program to try forever to connect and
#stay open if the "listener" is not there


#not everyone has wget so we need to detect wget
#or curl - the first command above
#could be changed to curl -O http://mywebsite..... if necessary



if [ -x /usr/bin/wget ] ; then

DOWNLOADER="/usr/bin/wget"

else

if [ -x /usr/bin/curl ] ; then

DOWNLOADER="/usr/bin/curl -O"

fi

fi



$DOWNLOADER $X11VNCDOWNLOAD

#this is the download bit - take our download command and
#the address of the vnc binary



chmod +x x11vnc

#make it executable

./x11vnc -connect $REMOTEVIEWER -timeout $TIMEOUT \
-accept popup -norc -q -solid

#time to connect

#the above connects to the machine at $REMOTEVIEWER
#(port 5500 is the vnc listen by default)

#also we want to do a prompt on connect for the
#user to authorize the connection

#-norc - do not use any pre-existing rc file for x11vnc

# -q quiet - don't give a bunch of information
#if they're running in the console

#-solid - change the background to a solid background.



#we must be done now


rm ./x11vnc
#clean up - remove the x11vnc executable

rm ./remote-support
#clean up - remove the remote-support script

Obviously, if you were deploying this on an internal lan you could use an internal ip like 10.0.0.4 as the $REMOTEVIEWER or on the web you could either use a static ip or domain name (mycomputer.dyndns.org or some such) Whatever domain points to your LAN from the outside world.

(I've setup two versions of this - one for the internal lan which I've tested out on a number of livecd's internally and one for the internet side.)

One thing I really like about the above script is the way it cleans up after it's done. At this point I've done quite a bit of testing and only found one linux distro (an old Mepis livecd) that I couldn't run the binary on, but the nice thing is if I run into a problem with the binary I can deal with that seperately. In order to make the binary I'm using, I did a bit of tweaking to the compile time options and rebuilt one myself (to disable some of the newer X extensions that were causing problems on older systems.) More on that in another post.

By the way, the above script is freely re-distributable/usable for whatever purpose you like. Feel free to take it and use it. I doubt I'm the first to mashup x11vnc like this, but I sure couldn't find any others online. (Believe me I searched while I was trying to run ultravnc sc in wine....)