1834604 Members
4409 Online
110069 Solutions
New Discussion

Re: FTP Results

 
JUAN_17
Occasional Advisor

FTP Results

Hello Everybody!
In a shell script...
How i can to know when a FTP was sucessful??
Where i can save the result of a sucessful or failed FTP?

Thanks a lot!

Freshman
3 REPLIES 3
A. Clay Stephenson
Acclaimed Contributor

Re: FTP Results

In the past, I used to do this stuff in the shell but now I NEVER do because I have found a much cleaner way to do it that makes error trapping duck soup. Do this stuff in Perl using the Net::FTP module which is available from http://www.cpan.org .

Here's how simple it can be:

#!/usr/bin/perl -w

use Net::FTP;
use strict;

my $ftp = Net::FTP->new("remotehost",Debug => 0);
$ftp->login("cstephen","top_secret");
$ftp->cwd("/tmp");
$ftp->get("myfile");
my $stat = $ftp->status;
my $full_stat = $ftp->code;
# $stat contains the first digit; usually all
# that you need to do is test if it is equal
# to 2. $full_stat contains the full 3-digit
# value but is seldom needed
printf("Status: %d Full Status: %d\n",$stat,$full_stat);
# Sample Test
if ($stat == 2)
{
print "Get was good\n";
}
else
{
print "Get was bad\n";
}
$ftp->quit;

I think if you start using this module you will never go back to shell scripting FTP. Moreover, these same scripts will run in the NT world. You can download a free version of perl for windows at http://www.activeperl.com.
Note that the answer is now the same on UNIX and NT and on the same subnet or across the net. Error checking in traditional scripts is far from easy; it can be done but why bother?
Perl makes it so simple.


Notice that this method easily handles the error checking. If you like, you can use the shell for most of your script and simply use a bit a perl for the actual FTP transfers. In that case add the statement exit($stat) to the perl script and then your shell script does have a valid status indication.

If it ain't broke, I can fix that.
Dario_1
Trusted Contributor

Re: FTP Results

Juan:

Write the output of the dir command to a ftp log file.

dir filename >> ftp.log

within your ftp script.

DR
Dave La Mar
Honored Contributor

Re: FTP Results

Juan -
This is a standard we use extensively. Please note that if you with to protect ftp passwords then investigate .netrc.

date > $LOGDIR/ftp.log
ftp -n -v <<-endl>> $LOGDIR/ftp.log
open ftpservername
user USER PASSWD
ascii
put $FTP_FILE
quit
endl

Welcome to the forums.

Best regards,

dl
"I'm not dumb. I just have a command of thoroughly useless information."