The start string is always executed on the host on which ttsession is running; however, the executed process can start another process on another host.
To do this, first make your start string be similar to the following:
# rsh farhost myprog |
Next, to make sure myprog is placed in the right session and receives its initial message, you need to propagate the important ToolTalk environment variables. The ttrsh shell script shown in Example 4–1 propagates these environment variables.
#! /bin/sh # Runs a command remotely in background, by pointing stdout and stderr # at /dev/null. By running this through the Bourne shell at the other end, # we get rid of the rsh and rshd. #set -x user= debug= HOST=${HOST-`hostname`} if [ "$1" = "-debug" ]; then debug=1 shift fi if [ $# -lt 2 -o "$1" = "-h" -o "$1" = "-help" ]; then echo "Usage: ttrsh [-debug] remotehost [-l username] \ remotecommand" echo "Usage: ttrsh [-h | -help]" exit 1 else host=$1 shift if test "$1" = "-l" ; then shift user=$1 shift fi fi xhostname=`expr "$DISPLAY" : "\([^:]*\).*"` xscreen=`expr "$DISPLAY" : "[^:]*\(.*\)"` if test x$xscreen = x; then xscreen=":0.0" fi if test x$xhostname = x -o x$xhostname = x"unix"; then DISPLAY=$HOST$xscreen fi if [ "$user" = "" ]; then userOption="" else userOption="-l $user" fi if [ $debug ]; then outputRedirect= else outputRedirect='> /dev/null 2>&1 &' fi ( echo "OPENWINHOME=$OPENWINHOME;export OPENWINHOME;\ TT_SESSION=$TT_SESSION;export TT_SESSION;\ TT_TOKEN=$TT_TOKEN;export TT_TOKEN;TT_FILE=$TT_FILE;\ export TT_FILE;DISPLAY=$DISPLAY;export DISPLAY;($*)" \ $outputRedirect | rsh $host $userOption /bin/sh & ) &