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 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….)