#!/bin/bash #set -x #$1 FTPUSER #$2 FILEPATH (local source path) #$3 ARCHIVEDIR #$4 FTPPATH (path on ftp-server) if [ -z ${1} ] || [ -z ${2} ] || [ -z ${3} ]; then echo "Usage: $0 \"FTPUSER\" \"FILEPATH\" \"ARCHIVEDIR\"" exit 1 fi PROXY="proxy.local:80" #PROXY="5.6.7.8:80" #LOGFILE="/var/log/sftpupload.log" NC=$(which nc) ARCHIVEDIR=$3 LOGFILE="${ARCHIVEDIR}sftpupload.log" #ARCHIVEDIR="/some/dir/ARCHIVE/" FILEPATH=$2 #FILEPATH="/ftptest/test/" #FTPFILENAME="*.csv" FTPFILENAME=$(ls $FILEPATH 2> /dev/null |grep .csv) #FTP-Hostname HOST="123sftp.com" #FTP-Username FTPUSER=$1 echo "FTPUSER=\"$FTPUSER\"" #FTPUSER=${USER} #Destination path on FTP-Server FTPPATH="/incoming/" #FTPPATH=$4 echo $(date +%d.%m.%Y_%H.%M) >> $LOGFILE #Check if local path exists if [ -d ${FILEPATH} ] then echo "FILEPATH=\"$FILEPATH\"" else echo "Path \"${FILEPATH}\" doesn´t exist!" | tee -a $LOGFILE exit 1 fi #Check if local file exists if [ -f ${FILEPATH}${FTPFILENAME} ] then echo "File \"$FTPFILENAME\" exists - starting to archive" cp -a ${FILEPATH}${FTPFILENAME} ${ARCHIVEDIR}${FTPFILENAME}.$(date +%H.%M_%d.%m.%Y) echo "file \"${FTPFILENAME}\" archived!" else echo "No file in folder!" | tee -a $LOGFILE echo "Filename: \"$FTPFILENAME\"" exit 1 fi #sftp -v -oProxyCommand='/bin/nc -v -X connect -x 1.2.3.4:3128 %h %p' ${FTPUSER}@${HOST} << EOFFTP #sftp -b - ${FTPUSER}@${HOST} << EOFFTP #Connect to FTP via SecureFTP (SSH needed) and upload files from FILEPATH to FTPPATH sftp -o ProxyCommand="'${NC}' -X connect -x '${PROXY}' %h %p" ${FTPUSER}@${HOST} << EOFFTP put ${FILEPATH}${FTPFILENAME} ${FTPPATH} quit EOFFTP T1=$? if [ "${T1}" -ne "0" ] then echo "Upload failed! Filename: \"${FTPFILENAME}\"" | tee -a $LOGFILE exit 1 else echo "File \"${FTPFILENAME}\" has been uploaded to ftp-server!" | tee -a $LOGFILE echo $LOGFILE rm ${FILEPATH}${FTPFILENAME} echo "File \"${FTPFILENAME}\" has been deleted from source!" exit 0 fi