Thanks all ,,,, huge response. Too many to list.
ORIGINAL POST
> We have a rather critical in-house app that
> uses ftp inside a script.
>
> Are there any graceful ways to test that
> the ftp was successful? Here is a code sample:
>
> ftp -n -v slooppy <<++EOF++
> user Lname Pword
> bye
> ++EOF++
> echo "$?"
>
> In this example, sloopy is a bogus name yet
> the $? is always 0. Obviously, an error
> inside ftp does not cause the exit code of
> ftp itself to be non-zero.
> Thus, if the real machine/network is down, or
> the ftp fails, we have no way of knowing about
> the failure.
SUMMARY
The solutions fell into 5 categories.
Category Votes Description
------------------------------------------------------------------
stdout 6 Save stdout into a file and parse it for errors
ftp 6 Check that you can "get" the file after you've "put" it
expect 5 Use the expect scripting language to check "responses"
rcp/scp 1 Use rcp or scp instead of ftp. I'm not sure what scp is.
I'm guessing it's a better rcp (maybe SecureCopy)
ping 1 Check the hosts availablility with ping or try
connecting to port 21 with nc (netcat).
perl 1 Someone suggested a perl script called "mirror" that seems
to have exit code checking.
The solution that fit best and easiest into my existing
script was the "stdout" solution.
Here is a csh example sent by Thad MacMillan
ftp -n classfeeds.advance.net << FTP_EOF > .status
user xxxxxxxx xxxxxxxx
binary
put $file
FTP_EOF
if [ -s .status ]; then
cat > .failed << MAIL_MESSAGE_EOF.
Thanks very much for all your advice.
-Mark
-- Mark Belanger (mjb@ltx.com) | LTX Corporation LTX Park at University Ave | Voice : (781) 467-5021 Westwood, MA 02090-2306, USA | Fax : (781) 329-6880
This archive was generated by hypermail 2.1.2 : Fri Sep 28 2001 - 23:12:44 CDT