1 #!/bin/sh 2 # 3 # x11vnc_loop: 4 # 5 # Example startup script for connecting x11vnc to an X display 6 # at system boot up and having it reconnect when the X server restarts. 7 # 8 # Run, in rc.local say, via, e.g.: 9 # 10 # /path/to/x11vnc_loop 1>> /var/tmp/x11vnc_loop.log 2>&1 & 11 # 12 # call with argument "once" or a number to limit the number of loops. 13 # 14 ########################################################################## 15 # The following needs to be customized: 16 x11vnc_cmd=x11vnc # or use full path (or set PATH). 17 pwfile=/path/to/vnc/passwd # always use a password 18 display=:0 # display of interest 19 restart_sleep=5 # pause between X server restarts. 20 21 # modify cmdline args if desired: 22 x11vnc_args="-display $display -rfbauth $pwfile -forever -nap" 23 24 # you may need to customize the "grep", etc, below in get_xauthority_file() 25 ########################################################################## 26 27 if [ "X$1" != "X" ]; then 28 max=$1 29 shift 30 fi 31 32 get_xauthority_file() { 33 # 34 # We need to find the MIT-COOKIE file... this not portable at all, 35 # depends on OS, distro, desktop, phase of moon, etc... 36 # 37 # If the cookie file was fixed and you knew it, you could just 38 # return it here e.g.: 39 # 40 ## echo "/var/gdm/:0.Xauth"; return 41 # 42 # or, if you knew the directory, you could look for the youngest 43 # file there and return it e.g.: 44 # 45 ## echo `ls -t /var/lib/xdm/authdir/authfiles/* | head -1`; return 46 47 # this hack tries to grep it out of ps output... 48 xauth="" 49 for i in 1 2 3 50 do 51 # very linux specific, and you likely need to tweak.. 52 patt="X11R6.*/X.*-auth" 53 xauth=`ps wwwaux | grep "$patt" \ 54 | egrep -v 'grep|Xprt' | head -1 \ 55 | sed -e 's/^.*-auth//' | awk '{print $1}'` 56 57 if [ "X$xauth" != "X" ]; then 58 break 59 fi 60 sleep 2 # wait a bit in case X server is restarting slowly. 61 done 62 echo $xauth 63 } 64 65 try=1 66 while [ 1 ] 67 do 68 echo "`date` $0 try number: $try"; try=`expr $try + 1` 69 70 auth=`get_xauthority_file` 71 if [ ! -r "$auth" ]; then 72 echo "`date` bad auth file: \"$auth\"" 73 else 74 cmd="$x11vnc_cmd $x11vnc_args" 75 sleep 1 76 echo "`date` running: $cmd -auth $auth" 77 # run x11vnc: 78 $cmd -auth $auth 79 if [ "X$max" = "Xonce" ]; then 80 exit $? 81 fi 82 fi 83 if echo "$max" | grep '[0-9]' > /dev/null; then 84 if [ $try -gt $max ]; then 85 exit 86 fi 87 fi 88 sleep $restart_sleep 89 done 90