#!/bin/bash
# Helper for ../wrun, q.v.
# Usage: invoke.sh [-x] me cmd ifile id port ip [args...]
#  Runs 
#   cmd [id] args...
#  via ssh to ip:port
#  If ifile is not /dev/null, feed in as stdin
#  Unless -x, worker id is passed as first arg
if [ "$1" = "-w" ]
then
 shift
 wait=1
fi
if [ "$1" = "-x" ]
then
 shift
 id=
 me=
else
 me=$1
 id=$4
fi
cmd="$2"
ifile=$3
port=$5
ip=$6
shift 6
echo "#$(date)#$cmd#$ifile#$id#$port#$ip#$@#" 1>&2
if [ "$ifile" != "/dev/null" ]
then
  echo "# from $ifile" 1>&2
  scp -P $port $ifile $ip:ifile.txt
fi || echo scp failed, status=$? 1>&2
if [ "$wait" ]
then
  ssh -t -p $port $ip "nohup $cmd $id $me ""$@"" > nohup.cc"
else
  ssh -p $port $ip "$cmd $id $me ""$@"
fi || echo ssh failed, status=$? 1>&2
echo "#$(date)#$id#" 1>&2
