Hi,

thanks for your new script, but I didn't get it working:

heikok@pc4027:~$ bash ./vglconnect -s -C -e "vglrun tseries" vglserver1

VirtualGL Client 64-bit v2.4 (Build 20150126)
vglclient is already running on this X display and accepting unencrypted
   connections on port 4242.

Making preliminary SSH connection to find a free port on the server ...
Bad escape character 'vglrun tseries'.
[VGL] ERROR: The server does not appear to have VirtualGL 2.1 or later
[VGL]    installed.




Ah, wait, after a bit of debugging:


heikok@pc4027:~$ bash ./vglconnect -s -e "vglrun tseries" -C vglserver1

-s and -e are vglconnect options, -C is an ssh option and will stop any
other vglconnect options. Since the order of options is so important, it
might be a good idea to add a debug line like

Runnging vglconnect with options '-s -e "vglrun tseries"' on
  ssh command with options  '-C vglserver1'

My attached version adds these debug-lines.


Heiko




On 2015-08-15 00:07, DRC wrote:
> This already works if you don't use the -s switch to vglconnect.  Why
> it's failing with -s is that -s causes vglconnect to run vgllogin on the
> server, so any additional arguments are interpreted as SSH options
> instead of as a remote command.  I added a new vglconnect option, per
> your suggestion, that allows you to specify a program to run on the server:
> 
> e.g.
> vglconnect -s -C -e 'vglrun /opt/VirtualGL/bin/glxspheres64' myserver
> 
> New script is attached.  Let me know if it works, and if so, I'll check
> it in.
> 
> 
> On 8/5/15 6:43 AM, DRC wrote:
>> I don't think it would be very difficult to add that functionality,
>> given that vglconnect is basically just a wrapper for SSH. Let me look
>> at it further and get back to you.
>>
>>> On Aug 5, 2015, at 3:15 AM, Heiko Klein <heiko.kl...@met.no> wrote:
>>>
>>> Hi,
>>>
>>> we're currently successfully using vgl to start our applications like:
>>>
>>> myclient$ vglconnect -s -C myserver
>>> myserver$ vglrun glprog
>>>
>>>
>>> We cannot sell our users a program which requires using the
>>> command-line, so we need to create a startup button. Thus we need a
>>> non-interactive startup of 'vglrun glprog', e.g. (not working!)
>>>
>>> myclient$ vglconnect -s -C myserver vglrun glprog
>>>
>>>
>>>
>>> Does there exist a vgl-program/option which allows starting
>>> vglconnect/vglrun from the client-machine?
>>>
>>>
>>> If not, is there some interest to add that functionality, e.g.
>>>
>>> myclient$ vglconnect -s -C  -E 'glprog' myserver
>>>
>>>
>>> (I checked the vglconnect/vgllogins skript and it doesn't seem to hard
>>> to add these parameters, so I could volunteer.)
>>>
>>>
>>> Best regards,
>>>
>>> Heiko
> 
> 
> 
> ------------------------------------------------------------------------------
> 
> 
> 
> _______________________________________________
> VirtualGL-Users mailing list
> VirtualGL-Users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/virtualgl-users
> 

-- 
Dr. Heiko Klein                   Norwegian Meteorological Institute
Tel. + 47 22 96 32 58             P.O. Box 43 Blindern
http://www.met.no                 0313 Oslo NORWAY
#!/bin/sh

# Copyright (C)2007 Sun Microsystems, Inc.
# Copyright (C)2009-2011, 2014-2015 D. R. Commander
#
# This library is free software and may be redistributed and/or modified under
# the terms of the wxWindows Library License, Version 3.1 or (at your option)
# any later version.  The full license is in the LICENSE.txt file included
# with this distribution.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# wxWindows Library License for more details.

maketemp()
{
        umask 077
        mktemp /tmp/$1.XXXXXX || exit 1
}

VGLTUNNEL=0
X11TUNNEL=1
CONNECT=1
FORCE=0
SSHCMD=ssh

usage()
{
        echo
        echo "USAGE: $0"
        echo "       [vglconnect options] [user@]hostname [Additional SSH 
options]"
        echo
        echo "vglconnect options:"
        echo "-display <d> = Local X display to use when drawing VirtualGL's 
images"
        echo "               (default: read from DISPLAY environment variable)"
        echo "-s = Tunnel VGL Transport and X11 through SSH (default: tunnel 
only X11)"
        echo "-e {program} = When using -s, execute {program} on the server 
after"
        echo "               running vgllogin"
        echo "-x = Do not tunnel X11 or the VGL Transport, but create an xauth 
key"
        echo "     and add it to the VirtualGL server's keyring so that the 
VirtualGL"
        echo "     server (and any that share its home directory) can use this 
X display"
        echo "-k = Do not connect to server, but create an xauth key for this X 
display and"
        echo "     add it to the local keyring so that any VirtualGL servers 
that share the"
        echo "     same home directory as this machine can use this X display"
        echo "-g = Use gsissh from Globus Toolkit to make all SSH connections"
        echo "-force = Force a new vglclient instance (use with caution)"
        echo "-bindir <d> = Path in which the VGL executables and scripts are 
installed on"
        echo "              the server machine (default: /opt/VirtualGL/bin).  
Can also be"
        echo "              set with the VGL_BINDIR environment variable on the 
client"
        echo "              machine."
        echo
        exit $1
}

if [ -z $VGL_BINDIR ]; then
        VGL_BINDIR=/opt/VirtualGL/bin
fi

OPTIONS=""
while [ $# -gt 0 ]
do
        case "$1" in
        -d*) DISPLAY=$2; OPTIONS="$OPTIONS -d $2"; shift ;;
        -b*) VGL_BINDIR=$2; OPTIONS="$OPTIONS -b $2";shift ;;
        -f*) FORCE=1; OPTIONS="$OPTIONS -f" ;;
        -s*) X11TUNNEL=1; VGLTUNNEL=1; CONNECT=1; OPTIONS="$OPTIONS -s" ;;
        -x*) X11TUNNEL=0; VGLTUNNEL=0; CONNECT=1; OPTIONS="$OPTIONS -x" ;;
        -k*) X11TUNNEL=0; VGLTUNNEL=0; CONNECT=0; OPITONS="$OPTIONS -k" ;;
        -g*) SSHCMD=gsissh; GLOBUS=1; OPTIONS="$OPTIONS -g" ;;
        -e*) COMMAND=$2; OPTIONS="$OPTIONS -e '$2'"; shift ;;
        *) break ;;
        esac
        shift
done

echo "Running vglconnect with options '$OPTIONS' on"
echo "  ssh command with options \'$*\'"

if [ $# -eq 0 -a $CONNECT -eq 1 ]; then
        usage 0
fi

if [ "$DISPLAY" = "" ]; then
        echo "[VGL] ERROR: An X display must be specified, either by using the 
-display"
        echo "[VGL]    argument to vglconnect or by setting the DISPLAY 
environment variable"
        exit 1
fi

LOGDIR=$HOME/.vgl
if [ ! -d $LOGDIR ]; then mkdir $LOGDIR; fi
LOGDISPLAY=`basename $DISPLAY`
LOGFILE=$LOGDIR/vglconnect-$HOSTNAME-$LOGDISPLAY.log

VGLARGS="-l "$LOGFILE" -d "$DISPLAY" -detach"
if [ "$FORCE" = "1" ]; then VGLARGS=$VGLARGS" -force"; fi
if [ ! "$VGL_PORT" = "" -a "$__VGL_SSHTUNNEL" = "1" ]; then
        PORT=$VGL_PORT
else
        VGLCLIENT=`dirname $0`/vglclient
        if [ ! -x $VGLCLIENT ]; then
                if [ -x /opt/VirtualGL/bin/vglclient ]; then
                        VGLCLIENT=/opt/VirtualGL/bin/vglclient
                else
                        VGLCLIENT=vglclient
                fi
        fi
        PORT=`$VGLCLIENT $VGLARGS`
        if [ $? -ne 0 -o "$PORT" = "" ]; then
                echo "[VGL] ERROR: vglclient failed to execute."
                exit 1
        fi
        echo
fi

if [ $VGLTUNNEL = 1 ]; then
        echo Making preliminary SSH connection to find a free port on the 
server ...
        REMOTEPORT=`$SSHCMD ${1+"$@"} "$VGL_BINDIR/nettest -findport && 
$VGL_BINDIR/vgllogin -check"`
        if [ $? -ne 0 -o "$REMOTEPORT" = "" ]; then
                echo "[VGL] ERROR: The server does not appear to have VirtualGL 
2.1 or later"
                echo "[VGL]    installed."
                exit 1
        fi
        echo Making final SSH connection ...
        if [ "$COMMAND" != "" ]; then
                $SSHCMD -t -Y -R$REMOTEPORT:localhost:$PORT ${1+"$@"} <<EOF
$VGL_BINDIR/vgllogin -s $REMOTEPORT
$COMMAND
EOF
        else
                $SSHCMD -t -Y -R$REMOTEPORT:localhost:$PORT ${1+"$@"} 
"$VGL_BINDIR/vgllogin -s "$REMOTEPORT
        fi
        exit 0
fi

if [ $X11TUNNEL = 1 ]; then
        $SSHCMD -Y ${1+"$@"}
        exit 0
fi

XAUTH=xauth
if [ -x /usr/X11R6/bin/xauth ]; then
        XAUTH=/usr/X11R6/bin/xauth
else
        if [ -x /usr/openwin/bin/xauth ]; then
                XAUTH=/usr/openwin/bin/xauth
        fi
fi
XAUTHFILE=`maketemp vglconnect`
$XAUTH -f $XAUTHFILE generate $DISPLAY . trusted timeout 0
if [ $? -ne 0 ]; then
        echo "[VGL] ERROR: Could not generate xauth key, possibly because the X 
server does"
        echo "[VGL]    not have the SECURITY extension or because the xauth 
command could "
        echo "[VGL]    not be found."
        rm -f $XAUTHFILE
        exit 1
fi
XAUTHCOOKIE=`$XAUTH -f $XAUTHFILE list | sed "s/.*[ ]//g"`
rm -f $XAUTHFILE
if [ "$CONNECT" = "1" ]; then
        $SSHCMD -t -x ${1+"$@"} "exec $VGL_BINDIR/vgllogin -x "$DISPLAY" 
"$XAUTHCOOKIE
else
        DNUM=`echo $DISPLAY | sed 's/.*[:]//g'`
        xauth add `hostname`":"$DNUM . $XAUTHCOOKIE
fi
------------------------------------------------------------------------------
_______________________________________________
VirtualGL-Users mailing list
VirtualGL-Users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/virtualgl-users

Reply via email to