aboutsummaryrefslogtreecommitdiff
path: root/vnc
blob: b29136d153f9c62e907876e59265a89a0dd2ba47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#!/bin/bash
#
# Wrapper around ssh and vncviewer
#

# Parameters
BASENAME="`basename $0`"
SERVER="$1"

# Check
if [ -x "$SERVER" ]; then
  echo "usage: $BASENAME <server>"
  exit 1
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 5901:127.0.0.1:5901 $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 -passwd $HOME/.vnc/$SERVER.passwd localhost:5901
else
  vncviewer localhost:5901
fi