Last active
September 12, 2024 12:57
-
-
Save tavinus/93bdbc051728748787dc22a58dfe58d8 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 | |
############################################################ | |
# MIGRATED TO REPOSITORY | |
# https://github.com/tavinus/cloudsend.sh | |
# | |
# This gist will NOT be updated anymore | |
############################################################ | |
############################################################ | |
# | |
# 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 | |
# | |
# Contributors: | |
# @MG2R @gessel | |
# | |
# Get this script to current folder with: | |
# curl -O 'https://raw.githubusercontent.com/tavinus/cloudsend.sh/master/cloudsend.sh' && chmod +x cloudsend.sh | |
# | |
############################################################ | |
CS_VERSION="0.1.6" | |
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 | --version Prints version and exits | |
-k | --insecure Uses curl with -k option (https insecure) | |
-p | --password Uses env var \$CLOUDSEND_PASSWORD as share password | |
You can 'export CLOUDSEND_PASSWORD' at your system, or set it at the call. | |
Please remeber to also call -p to use the password set." | |
printf "\n%s\n%s\n%s\n" "Use:" " $0 <filepath> <folderLink>" " CLOUDSEND_PASSWORD='MySecretPass' $0 -p <filepath> <folderLink>" | |
printf "\n%s\n%s\n%s\n" "Example:" " $0 './myfile.txt' 'https://cloud.mydomain.net/s/fLDzToZF4MLvG28'" " CLOUDSEND_PASSWORD='MySecretPass' $0 -p './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 | |
if [ "$1" = "-q" ] || [ "$1" = "--quiet" ]; then | |
VERBOSE=" -s" | |
shift | |
fi | |
if [ "$1" = "-k" ] || [ "$1" = "--insecure" ]; then | |
INSECURE=' -k' | |
log " > Insecure mode ON" | |
shift | |
fi | |
if [ "$1" = "-p" ] || [ "$1" = "--password" ]; then | |
PASSWORD=${CLOUDSEND_PASSWORD} | |
log " > Using password from env" | |
shift | |
fi | |
########################## | |
# Validate input | |
FILENAME="$1" | |
CLOUDURL='' | |
# if we have index.php in the URL, process accordingly | |
if [[ $2 == *"index.php"* ]]; then | |
CLOUDURL="${2%/index.php/s/*}" | |
else | |
CLOUDURL="${2%/s/*}" | |
fi | |
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 | |
########################## | |
# Extract base filename | |
BFILENAME=$(/usr/bin/basename $FILENAME) | |
########################## | |
# Send file | |
#echo "$CURLBIN"$INSECURE$VERBOSE -T "$FILENAME" -u "$FOLDERTOKEN":"$PASSWORD" -H "$HEADER" "$CLOUDURL/$PUBSUFFIX/$BFILENAME" | |
"$CURLBIN"$INSECURE$VERBOSE -T "$FILENAME" -u "$FOLDERTOKEN":"$PASSWORD" -H "$HEADER" "$CLOUDURL/$PUBSUFFIX/$BFILENAME" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Rebuild
I have just rebuilt most of the script and added many improvements.
But it is only available at the new repository.
This gist will be kept as is for all eternity.
The only 'downside' is that the old
-p
option is now-e
, because-p
now receives the password as a parameter, as in-p <myPass>
.From here to there, this is the current log (Aug 2020)
-r
/--rename
to change the destination (uploaded) file name.--help
andreadme.md
-p
now asks for a password as a parameter, as in-p <pass>
-e
uses an envrionment variable password (substitutes the old-p
option)-
or.
as input file name-r <filename>
-g
option-r <name>
option (rename)--help
More info on globbing:
CLICK HERE to see how to send an entire folder (and subfolders?) with the new script and
find