I am supposed to transfer a file from one server to another using FTP.I have written the following code but it does not seem to be working.Please help me debug or make any necessary modifications.Thank you.
########################################################################################
# Function to display the error and usage
########################################################################################
display_error_usage()
{
PARM=$1
echo "Error: $PARM was not specified"
echo "Usage: `basename $0` FILENAME ODATE"
exit 1
}
########################################################################################
# To check the parameter
########################################################################################
if [ "$1" = "" ]; then
display_error_usage FILENAME
fi
FILENAME=$1
if [ "$2" = "" ]; then
display_error_usage "ORDER DATE"
fi
ODATE=$2
########################################################################################
# To get the other parameters
########################################################################################
#if [ -f $HOME/$PASSWDFILE ]; then
# FTPNTLINE=`cat $HOME/$PASSWDFILE | grep ^$FILENAME`
#
# if [ "$FTPNTLINE" = "" ]; then
# echo "\n\nFILENAME $FILENAME does not exist in $HOME/$PASSWDFILE file"
# exit 1
# fi
#else
# echo "\n\n$HOME/$PASSWDFILE does not exist....."
# exit 1
#fi
TARGETDIR=/prd/psftp/psbatch/gbl/incoming
REMOTEHOST=PG586
USERID=psbatch
CDTRANSFER=/prd/psft/psbatch/gbl/incoming
export TARGETDIR REMOTEHOST USERID CDTRANSFER
DATE_FMT=%dd.mm.yyyy%
echo $FILENAME | grep $DATE_FMT >/dev/null
if [ $? = 0 ]; then
ODATE_DD=`echo $ODATE | cut -c7-8`
ODATE_MM=`echo $ODATE | cut -c5-6`
ODATE_YYYY=`echo $ODATE | cut -c1-4`
NEW_ODATE=$ODATE_DD$ODATE_MM$ODATE_YYYY
FILENAME=`echo $FILENAME | sed "s/$DATE_FMT/$NEW_ODATE/g"`
echo Translated Filename - $FILENAME
fi
########################################################################################
# To execute the ftp
########################################################################################
#TMPLOG=$PSBATCHLOG/scb_runsftpnt_$FILENAME.log
#TMPFILES=0
# to match filesize greater than zero for HKG and GBR
#MATCHFILESIZE=0
#if [ -s $CDTRANSFER/$FILENAME ]; then
# MATCHFILESIZE=1
#fi
# to Skip FTP transmission if zero byte file present
#TMPFILES=0
#if [ $MATCHFILESIZE = 0 ]; then
# TMPFILES=0
# echo "Zero Bytes $FILENAME FILE"
# rm -f $CDTRANSFER/$FILENAME
# # rm -f $TMPLOG
# exit 0
#fi
# If file size is greater than zero bytes and to create archive directory and copy the file
to cdtransfer
#if [ $MATCHFILESIZE = 1 ]; then
# TMPFILES=1
# FREQ_DESC="daily"
# if [ ! -d "$ARCHIVEDIR/$FREQ_DESC" ]; then
# mkdir $ARCHIVEDIR/$FREQ_DESC
# chmod 775 $ARCHIVEDIR/$FREQ_DESC
# fi
# if [ ! -d "$ARCHIVEDIR/$FREQ_DESC/$ODATE" ]; then
# mkdir $ARCHIVEDIR/$FREQ_DESC/$ODATE
# chmod 775 $ARCHIVEDIR/$FREQ_DESC/$ODATE
# fi
#else
# TMPFILES=0
#fi
# to Process FTP transmission
#if [ $TMPFILES -eq 1 ]; then
cd $CDTRANSFER
/usr/bin/scp -P 22 $FILENAME $USERID@$REMOTEHOST:$TARGETDIR/$FILENAME
if [ $? = 0 ]; then
echo "\n$FILENAME file was transferred successfully....."
#rm -f $CDTRANSFER/$FILENAME
#to move files from incoming to archive
DATE_FMT=`date %dd.mm.yyyy% `
v_archivedir="/prd/psft/psbatch/gbl/archive"
v_incomingdir="incoming"
cd $v_archivedir
#we need to check if the folderDATE_FMT exists it will move the file from the
if test -d $DATE_FMT
then
mv ../$v_incomingdir/$FILENAME ./$DATE_FMT/
else
mkdir $DATE_FMT
mv ../$v_incomingdir/$FILENAME ./$DATE_FMT/
fi
#end of archive process
STATUS=0
#changes made for archiving the files from the incoming folders
else
echo "\n$FILENAME file transfer failed....."
STATUS=1
fi
#fi
# rm -f $TMPLOG
exit $STATUS