#!/bin/bash

if ! pgrep -x pbs_server
then
	echo " not on torque master! (no pbs_server proc)";
	exit 1
fi

case "$(hostname)" in
	allegro) MIN=001; MAX=099;;
	adagio) MIN=101; MAX=199;;
esac

NODE="${1:?'first parameter msut be node number ###'}"

if [[ ( $NODE < $MIN ) || ( $NODE > $MAX ) ]]; then
	echo "node-number out of range! Wrong server?"
	exit 2
fi

ADMIN="${2:-${SUDO_USER:-${USER}}}" # given, sudoer, myself?

case "$(id -rg ${ADMIN:?cound not find admin user})" in
	4)	: ok, all our unix admins are 'adm'==4;;
	*)	echo 'admin user not member in adm'
		echo '($2 | $SUDO_USER | $UDER)'
		exit 3;;
esac

HOME=$(getent passwd $ADMIN | cut -d: -f 6)

if [[ ! -d $HOME ]]; then
	echo
	echo "WARNING: HOME=$HOME not found HERE, may be missig on node too..."
	echo
fi


# run it
sudo -H -E -u $ADMIN \
	/usr/bin/zsh -o extendedglob -f \
		-c "qsub -j oe -d '$HOME' \
			-M nm -l nodes=node$NODE =(
cat <<.EOF.
#PBS -N dummyjob.node$NODE
#PBS -l walltime=00:01:00
#PBS -l nodes=1:ppn=1
#PBS -l mem=1gb
#
echo --- where ---
uname -a
uptime
echo --- when ---
date
echo --- with ---
env | grep '^PBS'
.EOF.
)"
