Hi
I'm using this script to upload a file from local system to sftp server.
But in the log file i'm getting an error "Error during upload"
Can you please help me out ...
### CONFIGURATION
LOCAL_DIR=/abc/out
FILE_MASK="File*.txt"
LOG_DIR=/abc/error/File_`date "+%Y%m%d%H%M%S"`.LOG
SFTP_HOST=sftp.abcd.xy
SFTP_DIR=upload
SFTP_USER=user
BACKUP_DIR=/abc/backup/out
IDENTITY_FILE=/abc/shells/.ssh/ab_xyz
ERROR_DIR=/abc/error
### END OF CONFIGURATION PART
IFS='
'
PATH=/usr/bin
get_local_file() {
if ! LOCAL_FILE=`ls $LOCAL_DIR/$FILE_MASK 2> /dev/null`; then
# file not found
echo "$LOCAL_DIR/$FILE_MASK not found" >>$LOG_DIR;
return 1
fi
return 0
}
send_file() {
REMOTE_FILE=data_`date "+%Y%m%d%H%M%S"`.csv
LOCAL_FILE=`ls $LOCAL_DIR/$FILE_MASK 2> /dev/null`
B_LOCAL_FILE=$(basename $LOCAL_FILE) # basename of local file
#echo "LOCAL_FILE: $LOCAL_FILE"
#echo "REMOTE_FILE: $REMOTE_FILE";
#echo "B_LOCAL_FILE: $B_LOCAL_FILE"
# will simulate for(i=0;i<3;i++)
for i in 1 2 3; do
#echo "COMMAND: echo \"cd upload\nput $LOCAL_FILE\nrename $B_LOCAL_FILE $REMOTE_FILE\" | sftp -o IdentityFile=$IDENTITY_FILE $SFTP\_USER@$SFTP_HOST >>$LOG_DIR 2>&1"
ERR=$\(echo "cd upload\\nput $LOCAL_FILE\\nrename $B\_LOCAL_FILE $REMOTE_FILE" | sftp -o IdentityFile=$IDENTITY_FILE [EMAIL="$SFTP\_USER@$SFTP\_HOST"]$SFTP\_USER@$SFTP_HOST[/EMAIL] >>$LOG_DIR 2>&1\)
echo "entering command 1" >>$LOG_DIR
CODE=$?
echo $CODE >>$LOG_DIR
if [ "$CODE" = "0" ]; then
break;
fi
echo "Connection failed [EMAIL="$SFTP\_USER@$SFTP\_HOST"]$SFTP\_USER@$SFTP_HOST[/EMAIL]" >> $LOG_DIR
done
echo $ERR >> $LOG_DIR
if [ "$CODE" != "0" ]; then
echo "connection error" >> $LOG_DIR
return 2
fi
if [ "$ERR" != "Connecting to $SFTP_HOST..." ]; then
\# error during upload
echo "Error during upload" >> $LOG_DIR
return 3
fi
return 0
}
save_local_file() {
N_LOCAL_FILE=$(echo $B_LOCAL_FILE | sed -e "s/\.txt$//")
N_LOCAL_FILE=$N_LOCAL_FILE$(date "+%Y%m%d%H%M%S").txt
echo "N_LOCAL_FILE: $N_LOCAL_FILE" >> $LOG_DIR
if ! mv $LOCAL_FILE $BACKUP_DIR/$N_LOCAL_FILE; then
# creating of backup failed
return 4
fi
return 0
}
report_error() {
mv $LOCAL_DIR/.idoc $LOCAL_DIR/IDOCS_failed_sent_from_SAP.txt
exit 1
}
report_success() {
#touch $LOCAL_DIR/IDOCS_sent_from_SAP.txt
mv $LOCAL_DIR/.idoc $LOCAL_DIR/IDOCS_sent_from_SAP.txt
exit 0
}
main() {
get_local_file
R_CODE=$?
if [ "$R_CODE" != "0" ]; then
report_error $R_CODE
fi
send_file
R_CODE=$?
if [ "$R_CODE" != "0" ]; then
report_error $R_CODE;
fi
save\_local_file
R_CODE=$?
if [ "$R_CODE" != "0" ]; then
report_error $R_CODE
fi
\# else everything is ok
report_success
}
# run !
main