diff options
Diffstat (limited to 'vnc')
-rwxr-xr-x | vnc | 80 |
1 files changed, 80 insertions, 0 deletions
@@ -0,0 +1,80 @@ +#!/bin/bash +# +# Wrapper around ssh and vncviewer +# + +# Parameters +BASENAME="`basename $0`" +SERVER="$1" +LOCALPORT="${2:-5901}" +REMOTEPORT="${3:-5901}" + +# Clipboard options +# In practice, clipboard limitations are not working as expected +# So please do not use this script if you don't want to automatically share clipboard with the remote system +# This is probably a bug on xtigervncviewer +VIEWER_OPTS="-AcceptClipboard=off -SendClipboard=off -SetPrimary=off -SendPrimary=off" + +function usage { + echo "usage: $BASENAME <server> [localport] [remoteport]" + cat <<EOF + +setup instructions +================== + +* in the remote: + + sudo apt install tigervnc-standalone-server # install in the remote server + vncpasswd # generate a ~/.vnc/passwd in the remote server + +* in the local box: + + scp <server>:~/.vnc/passwd ~/.vnc/<server>.passwd # copy the secret + $BASENAME <server> # use our magic script to do everything else + +EOF + + exit 1 +} + +# Usage +if [ "$1" == "--help" ]; then + usage +fi + +# Check +if [ -z "$SERVER" ]; then + if [ -h "$HOME/.vnc/default.passwd" ]; then + SERVER="$(basename `readlink $HOME/.vnc/default.passwd` .passwd)" + else + usage + fi +fi + +# Check if vncserver is running in the remote server and start otherwise +ssh $SERVER <<EOF + HOSTNAME="\$(cat /etc/hostname)" + + if [ -e "\$HOME/.vnc/\$HOSTNAME:1.pid" ]; then + PID="\$(cat \$HOME/.vnc/\$HOSTNAME:1.pid)" + + if ! ps \$PID &> /dev/null; then + /usr/bin/vncserver -alwaysshared -dpi 96 -localhost :1 + fi + else + /usr/bin/vncserver -alwaysshared -dpi 96 -localhost :1 + fi +EOF + +# See http://www.g-loaded.eu/2006/11/24/auto-closing-ssh-tunnels/ +# Optional SSH compression +#ssh -C -c blowfish -f -L 5901:127.0.0.1:5901 $SERVER sleep 10 +ssh -f -L $LOCALPORT:127.0.0.1:$REMOTEPORT $SERVER sleep 10 + +# Run VNC client +# Copy $SERVER:~/.vnc/passwd into $HOME/.vnc/$SERVER.passwd for passwordless login +if [ -e "$HOME/.vnc/$SERVER.passwd" ]; then + vncviewer $VIEWER_OPTS -passwd $HOME/.vnc/$SERVER.passwd localhost:$LOCALPORT +else + vncviewer $VIEWER_OPTS localhost:$LOCALPORT +fi |