How to trap FTP error

sfuk
sfuk used Ask the Experts™
on
Dear Experts,

I have the following script. It set as a cron job. It works fine if the file is present on the server, but if it is not, the script hangs.
How can I trap the failure and then exit from the script?
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
Darrell PorterEnterprise Business Process Architect

Commented:
do an ls on the ftp server then perform a find or grep on "abc" or some known substring within the filename.
If no lines are returned, the file does not exist.

Author

Commented:
Thank you, WalkaboutTigger, for your quick response.

When i open ftp process, can I do something like

echo `ls -l abc*` > abc.log

Author

Commented:
I made the following changes/additions in my initial script and solved the problem.


#! /bin/bash

v_rundir="/home/abc"
v_ftp=`cat ftp.log | grep "not found" | wc -l`
cd $v_rundir
 
rm ftp.log

# Test to see if this process is already running...
if [ -e process.lck ] ; then   # if it is, then exit...
 exit
fi
echo $$ > process.lck     # otherwise, lock this process from duplicated execution...

#FTP Function
# Get the new pgp files...
sftp username@ftp4.server.com <<EOF >>/home/abc/ftp.log 2>&1
cd abc/Toabc
mget abc*.txt.pgp
rm abc*.txt.pgp
quit
EOF
if [ $v_ftp -ne "0" ]; then
rm process.lck
exit 1 
fi
exit

Open in new window

Software Developer
Commented:
Rather than run ftp with a here document, you have far more control if you drive it via expect. Picking up errors becomes almost a no-brainer. If you are interested, I can post an example or 2.
Dirk HaestProject manager

Commented:
This question has been classified as abandoned and is closed as part of the Cleanup Program. See the recommendation for more details.

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial