-
-
Save markusstraub/ebf283da8e9a107ea0840f1f01925ec9 to your computer and use it in GitHub Desktop.
Send files to Nextcloud/Owncloud shared folder using curl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
############################################################ | |
# | |
# cloudsend.sh | |
# | |
# Uses curl to send files to a shared | |
# Nextcloud/Owncloud folder | |
# | |
# Usage: ./cloudsend.sh <file> <folderLink> | |
# Help: ./cloudsend.sh -h | |
# | |
# Gustavo Arnosti Neves | |
# https://github.com/tavinus | |
# | |
# Get this script to current folder with: | |
# curl -O 'https://gist.githubusercontent.com/tavinus/93bdbc051728748787dc22a58dfe58d8/raw/cloudsend.sh' && chmod +x cloudsend.sh | |
# | |
############################################################ | |
# taken from: https://gist.github.com/MG2R/c896852b837a3807f49649c1ba2347ca | |
# further adapted by: mstraub | |
CS_VERSION="0.1.1_mstraub" | |
CLOUDURL="" | |
FOLDERTOKEN="" | |
PUBSUFFIX="public.php/webdav" | |
HEADER='X-Requested-With: XMLHttpRequest' | |
INSECURE='' | |
# https://cloud.mydomain.net/s/fLDzToZF4MLvG28 | |
# curl -k -T myFile.ext -u "fLDzToZF4MLvG28:" -H 'X-Requested-With: XMLHttpRequest' https://cloud.mydomain.net/public.php/webdav/myFile.ext | |
log() { | |
[ "$VERBOSE" == " -s" ] || printf "%s\n" "$1" | |
} | |
printVersion() { | |
printf "%s\n" "CloudSender v$CS_VERSION" | |
} | |
initError() { | |
printVersion >&2 | |
printf "%s\n" "Init Error! $1" >&2 | |
printf "%s\n" "Try: $0 --help" >&2 | |
exit 1 | |
} | |
usage() { | |
printVersion | |
printf "\n%s%s\n" "Parameters:" " | |
-h | --help Print this help and exits | |
-q | --quiet Be quiet | |
-v | --verbose Verbose output | |
-V | --version Prints version and exits | |
-p | --password Password for password protected uploads | |
-k | --insecure Uses curl with -k option (https insecure)" | |
printf "\n%s\n%s\n" "Use:" " $0 <filepath> <folderLink>" | |
printf "\n%s\n%s\n\n" "Example:" " $0 -p thepassword './myfile.txt' 'https://cloud.mydomain.net/s/fLDzToZF4MLvG28'" | |
} | |
########################## | |
# Process parameters | |
if [ "$1" = "-h" ] || [ "$1" = "--help" ]; then | |
usage | |
exit 0 | |
fi | |
if [ "$1" = "-V" ] || [ "$1" = "--version" ]; then | |
printVersion | |
exit 0 | |
fi | |
while (( "$#" > 2 )); do | |
if [ "$1" = "-q" ] || [ "$1" = "--quiet" ]; then | |
VERBOSE=" -s" | |
shift | |
fi | |
if [ "$1" = "-v" ] || [ "$1" = "--verbose" ]; then | |
VERBOSE=" -v" | |
shift | |
fi | |
if [ "$1" = "-k" ] || [ "$1" = "--insecure" ]; then | |
INSECURE=' -k' | |
log " > Insecure mode ON" | |
shift | |
fi | |
if [ "$1" = "-p" ] || [ "$1" = "--password" ]; then | |
PASSWORD="$2" | |
log " > Using password" | |
shift | |
shift | |
fi | |
done | |
########################## | |
# Validate input | |
FILENAME="$1" | |
CLOUDURL="${2%/s/*}" | |
FOLDERTOKEN="${2##*/s/}" | |
if [ ! -f "$FILENAME" ]; then | |
initError "Invalid input file: $FILENAME" | |
fi | |
if [ -z "$CLOUDURL" ]; then | |
initError "Empty URL! Nowhere to send..." | |
fi | |
if [ -z "$FOLDERTOKEN" ]; then | |
initError "Empty Folder Token! Nowhere to send..." | |
fi | |
########################## | |
# Check for curl | |
CURLBIN='/usr/bin/curl' | |
if [ ! -x "$CURLBIN" ]; then | |
CURLBIN="$(which curl 2>/dev/null)" | |
if [ ! -x "$CURLBIN" ]; then | |
initError "No curl found on system!" | |
fi | |
fi | |
########################## | |
# Send file | |
"$CURLBIN"$INSECURE$VERBOSE -T "$FILENAME" -u "$FOLDERTOKEN":"$PASSWORD" -H "$HEADER" "$CLOUDURL/$PUBSUFFIX/$FILENAME" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment