Add bash script for uploading/downloading files
This commit is contained in:
parent
031f620486
commit
f388124762
248
scripts/up
Executable file
248
scripts/up
Executable file
@ -0,0 +1,248 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# Configuration #
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
# Curl function to be used
|
||||||
|
CURL="curl"
|
||||||
|
DEFAULT_ARGS_CURL=()
|
||||||
|
|
||||||
|
# Defaults field to use. If equal to $UNSET will be oncsiedered as no set
|
||||||
|
URLPATH="/up"
|
||||||
|
GETPATH="/d"
|
||||||
|
USERNAME="-1"
|
||||||
|
PASSWORD="-1"
|
||||||
|
URL="-1"
|
||||||
|
FILEPASSWORD="-1"
|
||||||
|
VISIBLE="-1"
|
||||||
|
UNSET="-1"
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# Set defaults #
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
GET=0
|
||||||
|
VERB=0
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# Help #
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
function usage()
|
||||||
|
{
|
||||||
|
echo "Script to send files to sfs in command line"
|
||||||
|
echo ""
|
||||||
|
echo "$0 [options] filenames ..."
|
||||||
|
echo ""
|
||||||
|
echo "options:"
|
||||||
|
echo "\t-h --help : help"
|
||||||
|
echo "\t-u / --username USERNAME : username for log-in"
|
||||||
|
echo "\t-p / --password PASSWORD: password for log-in"
|
||||||
|
echo "\t-s / --server / --url URL : URL of server"
|
||||||
|
echo "\t-v / --visible : make the file publicly visible"
|
||||||
|
echo "\t-x / --file-password PASSWORD: set a password for downloading of file"
|
||||||
|
echo "\t-g / --get : Download file rather than upload"
|
||||||
|
echo "\t--verbose / --infos : Set to verbose mode"
|
||||||
|
echo ""
|
||||||
|
echo "filenames:"
|
||||||
|
echo "\tList of filenames from disk to upload"
|
||||||
|
echo "\tor if -g is set filename to download."
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# Colored terms #
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
if [[ -t 1 ]]
|
||||||
|
then
|
||||||
|
VERT="\033[32m"
|
||||||
|
ORANGE="\033[1;33m"
|
||||||
|
ROUGE="\033[1;31m"
|
||||||
|
STOPC="\033[0m"
|
||||||
|
else
|
||||||
|
VERT=""
|
||||||
|
ORANGE=""
|
||||||
|
ROUGE=""
|
||||||
|
STOPC=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# Check prerequisites #
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
function check_prerequisite()
|
||||||
|
{
|
||||||
|
if ! command -v $CURL &> /dev/null
|
||||||
|
then
|
||||||
|
echo -e "${ROUGE}ERROR${STOPC}: $CURL could not be found."
|
||||||
|
echo "Aborting"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check_prerequisite
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# Parsing arguments #
|
||||||
|
#######################################################################
|
||||||
|
FILES=()
|
||||||
|
while [[ $# -gt 0 ]]
|
||||||
|
do
|
||||||
|
key="$1"
|
||||||
|
|
||||||
|
case $key in
|
||||||
|
-h|--help)
|
||||||
|
usage
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
-u|--username)
|
||||||
|
if [ $# -gt 1 ]; then
|
||||||
|
USERNAME="$2"
|
||||||
|
shift # past argument
|
||||||
|
shift # past value
|
||||||
|
else
|
||||||
|
echo -e "${ROUGE}ERROR${STOPC}: Could not parse argument username"
|
||||||
|
echo ""
|
||||||
|
usage
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
-p|--password)
|
||||||
|
if [ $# -gt 1 ]; then
|
||||||
|
PASSWORD="$2"
|
||||||
|
shift # past argument
|
||||||
|
shift # past value
|
||||||
|
else
|
||||||
|
echo -e "${ROUGE}ERROR${STOPC}: Could not parse argument password"
|
||||||
|
echo ""
|
||||||
|
usage
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
-s|--server|--url)
|
||||||
|
if [ $# -gt 1 ]; then
|
||||||
|
URL="$2"
|
||||||
|
shift # past argument
|
||||||
|
shift # past value
|
||||||
|
else
|
||||||
|
echo -e "${ROUGE}ERROR${STOPC}: Could not parse argument server url"
|
||||||
|
echo ""
|
||||||
|
usage
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
-v|--visible)
|
||||||
|
VISIBLE="1"
|
||||||
|
shift # past argument
|
||||||
|
;;
|
||||||
|
-x|--file-password)
|
||||||
|
if [ $# -gt 1 ]; then
|
||||||
|
FILEPASSWORD="$2"
|
||||||
|
shift # past argument
|
||||||
|
shift # past value
|
||||||
|
else
|
||||||
|
echo -e "${ROUGE}ERROR${STOPC}: Could not parse argument file password"
|
||||||
|
echo ""
|
||||||
|
usage
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
-g|--get)
|
||||||
|
GET=1
|
||||||
|
shift # past argument
|
||||||
|
;;
|
||||||
|
--verbose|--infos)
|
||||||
|
VERB=1
|
||||||
|
shift # past argument
|
||||||
|
;;
|
||||||
|
-*)
|
||||||
|
echo -e "${ROUGE}ERROR${STOPC}: Unknown argument $1"
|
||||||
|
echo ""
|
||||||
|
usage
|
||||||
|
exit 3
|
||||||
|
;;
|
||||||
|
*) # Filename
|
||||||
|
FILES+=("$1")
|
||||||
|
shift # past argument
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# Check arguments #
|
||||||
|
#######################################################################
|
||||||
|
# We need username, password (for dl only), url and at least one filename
|
||||||
|
|
||||||
|
# Check for filenames
|
||||||
|
if [ ! ${#FILES[@]} -gt 0 ]
|
||||||
|
then
|
||||||
|
echo -e "${ROUGE}ERROR${STOPC}: Filenames not provided"
|
||||||
|
echo ""
|
||||||
|
usage
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check for url or ask !
|
||||||
|
if [ "$URL" = "$UNSET" ]
|
||||||
|
then
|
||||||
|
read -p "Server URL: " URL
|
||||||
|
fi
|
||||||
|
|
||||||
|
# check for password or ask !
|
||||||
|
if [ "$USERNAME" = "$UNSET" ]
|
||||||
|
then
|
||||||
|
read -p "Username: " USERNAME
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ $GET -eq 1 ]
|
||||||
|
then
|
||||||
|
[ $VERB -gt 0 ] && echo "Download mode"
|
||||||
|
else
|
||||||
|
[ $VERB -gt 0 ] && echo "Upload mode"
|
||||||
|
# check for password or ask !
|
||||||
|
if [ "$PASSWORD" = "$UNSET" ]
|
||||||
|
then
|
||||||
|
read -s -p "Password: " PASSWORD
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
#######################################################################
|
||||||
|
# Prepare the query #
|
||||||
|
#######################################################################
|
||||||
|
|
||||||
|
ARGS=()
|
||||||
|
if [ $GET -eq 1 ]
|
||||||
|
then
|
||||||
|
# File password
|
||||||
|
[ ! $FILEPASSWORD = "$UNSET" ] && ARGS+=("-F" "filepwd=$FILEPASSWORD")
|
||||||
|
# Add files
|
||||||
|
for PATH in "${FILES[@]}"
|
||||||
|
do
|
||||||
|
FULLURL="$URL"
|
||||||
|
[ ! "$GETPATH" = "$UNSET" ] && FULLURL+="$GETPATH"
|
||||||
|
FULLURL+="/$USERNAME/$FILES"
|
||||||
|
ARGS+=("$FULLURL")
|
||||||
|
done
|
||||||
|
else
|
||||||
|
# Default args
|
||||||
|
ARGS+=("-F" "username=$USERNAME" "-F" "password=$PASSWORD")
|
||||||
|
# Visible
|
||||||
|
[ $VISIBLE -gt 0 ] && ARGS+=("-F" "visible=1")
|
||||||
|
# File password
|
||||||
|
[ ! $FILEPASSWORD = "$UNSET" ] && ARGS+=("-F" "filepwd=$FILEPASSWORD")
|
||||||
|
# Add files
|
||||||
|
for FPATH in "${FILES[@]}"
|
||||||
|
do
|
||||||
|
ARGS+=("-F" "file[]=@$FPATH")
|
||||||
|
done
|
||||||
|
FULLURL="$URL"
|
||||||
|
[ ! "$URLPATH" = "$UNSET" ] && FULLURL+="$URLPATH"
|
||||||
|
ARGS+=("$FULLURL")
|
||||||
|
fi
|
||||||
|
|
||||||
|
[ $VERB -gt 0 ] && echo "> $CURL ${ARGS[@]}"
|
||||||
|
$CURL ${ARGS[@]} ${DEFAULT_ARGS_CURL[@]}
|
Loading…
Reference in New Issue
Block a user