summaryrefslogtreecommitdiffstats
path: root/bin/opscp
diff options
context:
space:
mode:
authorThomas Wiest <twiest@users.noreply.github.com>2015-04-30 12:17:50 -0400
committerThomas Wiest <twiest@users.noreply.github.com>2015-04-30 12:17:50 -0400
commit1f9585b57aeaab70108e98ed4adcb80574acc949 (patch)
treee83f95fdd71cc015e5d220cd1af3c21fd63521e7 /bin/opscp
parent935da07e94b27ad1eb6c9085d3d182c9e0bc9b0d (diff)
parenta9abcc3646053ca8f2bf2dd3ee39b06ac12d35c6 (diff)
downloadopenshift-1f9585b57aeaab70108e98ed4adcb80574acc949.tar.gz
openshift-1f9585b57aeaab70108e98ed4adcb80574acc949.tar.bz2
openshift-1f9585b57aeaab70108e98ed4adcb80574acc949.tar.xz
openshift-1f9585b57aeaab70108e98ed4adcb80574acc949.zip
Merge pull request #196 from twiest/pr
added opscp
Diffstat (limited to 'bin/opscp')
-rwxr-xr-xbin/opscp117
1 files changed, 117 insertions, 0 deletions
diff --git a/bin/opscp b/bin/opscp
new file mode 100755
index 000000000..445c838f5
--- /dev/null
+++ b/bin/opscp
@@ -0,0 +1,117 @@
+#!/bin/bash
+
+
+function usage() {
+ cat << EOF
+Usage: opscp [OPTIONS] local remote
+
+Options:
+ --version show program's version number and exit
+ --help show this help message and exit
+ -l USER, --user=USER username (OPTIONAL)
+ -p PAR, --par=PAR max number of parallel threads (OPTIONAL)
+ --errdir=ERRDIR output directory for stderr files (OPTIONAL)
+ --outdir=OUTDIR output directory for stdout files (OPTIONAL)
+ -e ENV, --env ENV Which environment to use
+ -t HOST_TYPE, --host-type HOST_TYPE
+ Which host type to use
+ -O OPTION, --option=OPTION
+ SSH option (OPTIONAL)
+ -v, --verbose turn on warning and diagnostic messages (OPTIONAL)
+ -A, --askpass Ask for a password (OPTIONAL)
+ -x ARGS, --extra-args=ARGS
+ Extra command-line arguments, with processing for
+ spaces, quotes, and backslashes
+ -X ARG, --extra-arg=ARG
+ Extra command-line argument
+ -r, --recursive recusively copy directories (OPTIONAL)
+
+Example: opscp -t ex-srv -e stg -l irb2 foo.txt /home/irb2/foo.txt
+
+EOF
+}
+
+if [ $# -eq 0 ] || [ "$1" == "--help" ]
+then
+ usage
+ exit 1
+fi
+
+PSCP_PAR=200
+USER=root
+PSCP_OPTIONS=""
+ENV=""
+HOST_TYPE=""
+while [ $# -gt 0 ] ; do
+ if [ "$1" == "-t" -o "$1" == "--host-type" ] ; then
+ shift # get past the option
+ HOST_TYPE=$1
+ shift # get past the value of the option
+
+ elif [ "$1" == "-e" ] ; then
+ shift # get past the option
+ ENV=$1
+ shift # get past the value of the option
+
+ elif [ "$1" == "-p" -o "$1" == "--par" ] ; then
+ shift # get past the option
+ PSCP_PAR=$1
+ shift # get past the value of the option
+
+ elif [ "$1" == "-l" -o "$1" == "--user" ] ; then
+ shift # get past the option
+ USER=$1
+ shift # get past the value of the option
+
+ elif [ "$1" == "-h" -o "$1" == "--hosts" -o "$1" == "-H" -o "$1" == "--host" ] ||
+ [ "$1" == "-o" ] ; then
+ echo "ERROR: unknown option $1"
+ exit 20
+
+ else
+ if [ "${1:0:1}" == "-" ] ; then
+ # It's an option, don't quote
+ PSCP_OPTIONS="$PSCP_OPTIONS $1"
+ else
+ PSCP_OPTIONS="$PSCP_OPTIONS '$1'"
+ fi
+ shift # Get past this option
+ fi
+done
+
+if [ -z "$ENV" ]
+then
+ echo
+ echo "-e is a required paramemeter"
+ echo
+ exit 10
+fi
+
+if [ -z "$HOST_TYPE" ]
+then
+ echo
+ echo "-t is a required paramemeter"
+ echo
+ exit 15
+fi
+
+PSCP_OPTIONS="-t 0 -p $PSCP_PAR -l $USER -h <(ohi -t $HOST_TYPE -e $ENV 2>/dev/null) $PSCP_OPTIONS"
+
+
+# See if the ohi options are valid
+ohi -t $HOST_TYPE -e $ENV &> /dev/null
+ECODE=$?
+if [ $ECODE -ne 0 ] ; then
+ echo
+ echo "ERROR: ohi failed with exit code $ECODE"
+ echo
+ echo "This is usually caused by a bad value passed for host-type or environment."
+ echo
+ exit 25
+fi
+
+echo
+echo "Running: pscp.pssh $PSCP_OPTIONS"
+echo
+
+eval pscp.pssh $PSCP_OPTIONS