#!/bin/bash # FTP Login HOST='ftp.example.com' PORT='21' USER='foo' PASS='bar' # Encryption ENCKEY='!! CHANGE-ME !!' DIGEST='sha256' CIPHER='aes-256-cbc' SUFFIX='.enc' if [ $# -lt 1 ]; then echo -e "Encrypt and upload a file to ftp://$HOST\n" >&2 echo -e "Usage: $(basename "$0") \n" >&2 exit 1 fi if [ ! -f "$1" ]; then echo -e "Error: File '$1' not found.\n" >&2 exit 1 fi checkBinarys() { BINS=("$@") for BIN in "${BINS[@]}"; do hash $BIN 2>/dev/null || { echo -e "Error: Binary '$BIN' is missing.\n" >&2 exit 1 } done } # Check if all needed binarys are present checkBinarys "openssl" "pv" "ncftpput" # Encrypt & Upload openssl "$CIPHER" -salt -md "$DIGEST" -k "$ENCKEY" -in "$1" | pv -bper -s $(stat -c%s "$1") | ncftpput -c -r 1 -u "$USER" -p "$PASS" -P $PORT "$HOST" /"$1$SUFFIX" || { echo -e "\nError: Upload failed.\n" >&2 exit 1 }