You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.2 KiB
90 lines
2.2 KiB
#!/bin/sh
|
|
#
|
|
# x11vnc_loop:
|
|
#
|
|
# Example startup script for connecting x11vnc to an X display
|
|
# at system boot up and having it reconnect when the X server restarts.
|
|
#
|
|
# Run, in rc.local say, via, e.g.:
|
|
#
|
|
# /path/to/x11vnc_loop 1>> /var/tmp/x11vnc_loop.log 2>&1 &
|
|
#
|
|
# call with argument "once" or a number to limit the number of loops.
|
|
#
|
|
##########################################################################
|
|
# The following needs to be customized:
|
|
x11vnc_cmd=x11vnc # or use full path (or set PATH).
|
|
pwfile=/path/to/vnc/passwd # always use a password
|
|
display=:0 # display of interest
|
|
restart_sleep=5 # pause between X server restarts.
|
|
|
|
# modify cmdline args if desired:
|
|
x11vnc_args="-display $display -rfbauth $pwfile -forever -nap"
|
|
|
|
# you may need to customize the "grep", etc, below in get_xauthority_file()
|
|
##########################################################################
|
|
|
|
if [ "X$1" != "X" ]; then
|
|
max=$1
|
|
shift
|
|
fi
|
|
|
|
get_xauthority_file() {
|
|
#
|
|
# We need to find the MIT-COOKIE file... this not portable at all,
|
|
# depends on OS, distro, desktop, phase of moon, etc...
|
|
#
|
|
# If the cookie file was fixed and you knew it, you could just
|
|
# return it here e.g.:
|
|
#
|
|
## echo "/var/gdm/:0.Xauth"; return
|
|
#
|
|
# or, if you knew the directory, you could look for the youngest
|
|
# file there and return it e.g.:
|
|
#
|
|
## echo `ls -t /var/lib/xdm/authdir/authfiles/* | head -1`; return
|
|
|
|
# this hack tries to grep it out of ps output...
|
|
xauth=""
|
|
for i in 1 2 3
|
|
do
|
|
# very linux specific, and you likely need to tweak..
|
|
patt="X11R6.*/X.*-auth"
|
|
xauth=`ps wwwaux | grep "$patt" \
|
|
| egrep -v 'grep|Xprt' | head -1 \
|
|
| sed -e 's/^.*-auth//' | awk '{print $1}'`
|
|
|
|
if [ "X$xauth" != "X" ]; then
|
|
break
|
|
fi
|
|
sleep 2 # wait a bit in case X server is restarting slowly.
|
|
done
|
|
echo $xauth
|
|
}
|
|
|
|
try=1
|
|
while [ 1 ]
|
|
do
|
|
echo "`date` $0 try number: $try"; try=`expr $try + 1`
|
|
|
|
auth=`get_xauthority_file`
|
|
if [ ! -r "$auth" ]; then
|
|
echo "`date` bad auth file: \"$auth\""
|
|
else
|
|
cmd="$x11vnc_cmd $x11vnc_args"
|
|
sleep 1
|
|
echo "`date` running: $cmd -auth $auth"
|
|
# run x11vnc:
|
|
$cmd -auth $auth
|
|
if [ "X$max" = "Xonce" ]; then
|
|
exit $?
|
|
fi
|
|
fi
|
|
if echo "$max" | grep '[0-9]' > /dev/null; then
|
|
if [ $try -gt $max ]; then
|
|
exit
|
|
fi
|
|
fi
|
|
sleep $restart_sleep
|
|
done
|