aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
Diffstat (limited to 'tools')
-rwxr-xr-xtools/rexec.sh26
1 files changed, 16 insertions, 10 deletions
diff --git a/tools/rexec.sh b/tools/rexec.sh
index b45410c..98652c4 100755
--- a/tools/rexec.sh
+++ b/tools/rexec.sh
@@ -27,17 +27,18 @@ SSH_HOST=
SSH_OPTIONS="-o NumberOfPasswordPrompts=0 -o StrictHostKeyChecking=no"
SSH="ssh $SSH_OPTIONS"
-SCRIPT_FILE=
+SCRIPT_FILES=()
SCRIPT_INTERPRETER=/bin/sh
+FILES=""
+
function parse_args() {
for (( i=0; i < $ARGC;i++ )); do
local ARGREGEX="^-.*"
if [[ ! ${ARGV[$i]} =~ $ARGREGEX ]]; then
[ -z $SSH_HOST ] && SSH_HOST=${ARGV[$i]} && continue
- [ -z $SCRIPT_FILE ] && SCRIPT_FILE=${ARGV[$i]} && continue
-
- print_help 1
+ SCRIPT_FILES+=(${ARGV[$i]})
+ continue
fi
case ${ARGV[$i]} in
@@ -50,6 +51,9 @@ function parse_args() {
-i)
i=$((i+1))
SSH_IDENTITY=${ARGV[$i]};;
+ -f)
+ i=$((i+1))
+ FILES="${ARGV[$i]}";;
-h)
print_help 0;;
*)
@@ -61,7 +65,7 @@ function parse_args() {
done
[ -z $SSH_HOST ] && echo No host specified && exit 1
- [ -z $SCRIPT_FILE ] && echo No script specified && exit 1
+ [ ${#SCRIPT_FILES[@]} -eq 0 ] && echo No script specified && exit 1
}
function print_help() {
@@ -73,6 +77,7 @@ $0 [OPTIONS] [USER@]HOST SCRIPT
-p <PORT> SSH port (default: 22)
-s <SSH> Custom SSH program
-i <IDENTITY> SSH Identity file (default: ~/.ssh/id_rsa.pub)
+ -f FILE Copy FILE to target before execution
-h Print this help text
EOF
exit $1
@@ -80,10 +85,11 @@ EOF
parse_args
-[ ! -f $SCRIPT_FILE ] && echo \"$SCRIPT_FILE\" not found && exit 1
+#[ ! -f $SCRIPT_FILE ] && echo \"$SCRIPT_FILE\" not found && exit 1
-INTERPRETER_STRING=$(head -n 1 $SCRIPT_FILE)
-INTERPRETER_REGEX="^#!.*"
-[[ $INTERPRETER_STRING =~ $INTERPRETER_REGEX ]] && SCRIPT_INTERPRETER=$(tail -c +3 <<< $INTERPRETER_STRING)
+#INTERPRETER_STRING=$(head -n 1 $SCRIPT_FILE)
+#INTERPRETER_REGEX="^#!.*"
+#[[ $INTERPRETER_STRING =~ $INTERPRETER_REGEX ]] && SCRIPT_INTERPRETER=$(tail -c +3 <<< $INTERPRETER_STRING)
-cat $SCRIPT_FILE | $SSH -p $SSH_PORT -i $SSH_IDENTITY $SSH_HOST $SCRIPT_INTERPRETER
+[ ! -z "$FILES" ] && scp -S "$SSH" -i $SSH_IDENTITY -P $SSH_PORT $FILES $SSH_HOST:
+cat ${SCRIPT_FILES[@]} | $SSH -p $SSH_PORT -i $SSH_IDENTITY $SSH_HOST "/bin/bash"