Validating ftp transfer from Unix Server

I need to script the following task and place it in a cron;
I need to ftp two data files from our Unix Server to a common ftp file server. Once the file transfer is complete, I must send a header or flag file that tells a remote process on the ftp server tthat the transfer is complete otherwise I need to send a mailx out that indicates the transfer failed.
What would be the best way to determine if my transfer was complete. My first inclination is to compare file sizes between my local unix file and the remote ftp server file but am not clear on how to do that. I am unable to remotely connect to the ftp server with anything other than ftp. (ie. rsh ssh...)  Any help would be appreciated.
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

why not using rsyn + ssh to do the job, it is easier and secure. it can perform the validation on fly.

more infor about rsync:

If you still want to  plain text file, the best you can do is you
use script to ftp login to your server, run ls -al command inside session and redirct  the output to a file, then the files size in the file against the file size you have download.
GeekManAuthor Commented:
redirecting results in a zero byte local (unix) file that is of no value.
GeekManAuthor Commented:
rsync or ssh....Unfortunately, I have no control over the technology used on the remote server. I have suggested these but so far ftp is the only thing we have available currently
Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

Are you saying that
ls -al > file
creates a zero byte file?
even if the directory was empty it should have listed . and ..
If it llists the two data files, then you can use it as the  header or flag file that a a remote process can read to compare file sizes

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
How did you redirect the out put, here's an example script
to get the filelist.txt:

# !/bin/ksh
ftp -n  $FTPSERVER <<EOF
lcd /path-to/myfiledir
ls -al
# Make sure that there is no WHITE space before EOF
}> /path-to/filelist.txt


the output is in /path-to/filelist.txt
then check filelist.txt
was this supposed to run on the machine the files are coming from, or on the machine tho files are going to?
I assume that you are runing the script in your locat machine to get the file list in the FTP server, and use the file list to compare the file
size you have download.
GeekManAuthor Commented:
This is what I have so far. When I tee the output into my log file I get nothing. If I use the brackets { } as you suggested above, my script misinterprets the ftp code...(some of the code deals with alias package locations...disregard that.)

if [[ -z $PKG ]];then . ~/.profile -q;fi

case ${PKG_LOC} in
      plf)      EDMS_AREA=west;;
      cin)      EDMS_AREA=east;;

export EDMS_AREA
export psn_file='edm_psn_'${EDMS_AREA}
export xfm_file='edm_xfm_'${EDMS_AREA}
export psn_hdr='edm_psn_'${EDMS_AREA}
export xfm_hdr='edm_xfm_'${EDMS_AREA}

filelist=${psn_file}' '${xfm_file}
cd ${CES_HOME}/edm_exports

if SvcPkg -q;then
      print "Accessing Export Directory...\n"
      chmod 775 *.txt
      # first loop is psn file, 2nd loop is xfm file..
      for file in $filelist; do
            export fout=$file'_out.txt'
            export fhdr=$file'_hdr.txt'
            export lfsize=`wc -c ${fout} | cut -d" " -f1`
            print "Begin ${fout} File Transfer at:" $(date)

`ftp -inv <<-END_FTP
prompt off
cd /ces/edm/${EDMS_AREA}
delete ${fout}
delete ${fhdr}
put ${fout}
size ${fout}
END_FTP` | tee transfer.log

            export rfsize=`grep 213 transfer.log | cut -d" " -f2`
            if [[ ${lfsize} -eq ${rfsize} ]];

ftp -inv <<-END_FTP1
cd /ces/edm/${EDMS_AREA}
put ${fhdr}
                  print ${fout}" file sizes did not match.."
      echo "Svc Package is not located on this node, this script will now exit."

# Removed loginname and password by yuzh {Page Editor}
GeekManAuthor Commented:
(Community Support)..Please delete this question.
GeekManAuthor Commented:
Vee_Mod, what I'd really like is an edit button that I can use to edit the posts that I author. Seems like you offered that in earlier versions..??
The bottom line is that I don't want the username and password shared in my 4:41pm post on this question...... whatever we have to do to accomplish this. If it mean deleteing the question then yes, let's delete it. If you have other options then please exercise them.....As a user I have none. (except to have never posted it to begin with!)

Thank you..
GeekManAuthor Commented:
Thank you Vee_Mod... Mission accomplished....
GeekManAuthor Commented:
Thanks...I transgressed the unwritten law...I know, I should have my head nailed to a table by one of the Piranha brothers.......!
It had been a long day....i was tired....I hit the submit button and then realizes.."Oh $#&%%.!!!."

Thanks again....
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
System Programming

From novice to tech pro — start learning today.