All.
 
I wrote this perl program using Expect.pm and this program also works
fine in foreground but does NOT work in background (cron job). Any help
is greatly appreciated.
 
 Thanks
 
#!/usr/local/bin/perl -w
 
use File::Basename;
our $debug;
use Expect;
@ARGV == 1 or die "usage: $0 rem_host rem_user rem_pswd lcal_file
rem_file\n";
my ($rem_host, $rem_user, $rem_pswd, $lcal_file, $rem_file) = split ':',
shift;
die "usage: $0 rem_host:rem_user:rem_pswd:lcal_file:rem_file" unless
defined $rem_host;
 
my $t = 30;
my $ftp_prompt = 'ftp> ';
if ($debug) {
$Expect::Debug=1;
$Expect::Exp_Internal=1;
}
 
my $ftp = Expect->spawn ("ftp", $rem_host);
$ftp->expect($t, "Name") or die "Never got username prompt on $host, " .
$ftp->exp_error() . "\n";
print $ftp "$rem_user\r";
 
$ftp->expect($t, '-re', 'Password:\s*') or die "Never got password
prompt on $host, " . $ftp->exp_error() . "\n";
print $ftp "$rem_pswd\r";
 
$ftp->expect($t, '-re', $ftp_prompt) or die "Never got ftp prompt after
sending username and password, " .$ftp->exp_error() . "\n";
print $ftp "bin\r";
 
$ftp->expect($t, '-re', $ftp_prompt) or die "Never got ftp prompt after
switch to bin format, " . $ftp->exp_error() . "\n";
print $ftp "send $lcal_file $rem_file\r";
 
$ftp->expect($t, '-re', $ftp_prompt) or die "Never got ftp prompt after
sending file, " . $ftp->exp_error() . "\n";
print $ftp "quit\r";
$ftp->expect($t, '-re', "Goodbye.") or die "Never got 'Goodbye.', " .
$ftp->exp_error() . "\n";
$ftp->hard_close();

Reply via email to