I've written myself a script to do all of my FTP stuff for me, but it's having a problem: it's hanging right before the line where it is supposed to put() the file into where I want it to go.
Code Below:
#!/usr/bin/perl -w
#
#
use strict;
use Net::FTP;
use Net::FTP::File;
use Term::ReadKey;
use diagnostics;
my $username = '';
my $password = '';
my $directory = '';
my $localfile = '';
my $remotefile = '';
my $filename = '';
my $domain = '';
print "Domain: ";
chomp($domain = <STDIN>);
my $ftp = '';
if($ftp = Net::FTP->new("$domain")) {
print "Successfully connected to $domain\n";
} else {
print "Couldn't connect:\n\t" . $ftp->message;
quit();
}
print "Username: ";
chomp($username = <STDIN>);
ReadMode 2;
print "Password: ";
chomp($password = <STDIN>);
ReadMode 0;
if($ftp->login($username, $password)) {
print "\nSuccessfully logged in as $username\@$domain\n";
} else {
print "Couldn't Login:\n\t" . $ftp->message;
quit();
}
print "Working Directory: ";
chomp($directory = <STDIN>);
if($ftp->cwd($directory)) {
#change working directory
print "Successfully changed working directory to $directory";
} else {
print "Couldn't change working directory:\n\t" . $ftp->message;
quit();
}
my @filearray = ();
my $input = '';
my $count = 0;
print "\n";
while () {
print "File to upload: ";
chomp($input=<STDIN>);
if ($input ne '') {
push @filearray, $input;
$count++;
next;
}
if ($input eq '') { last; }
}
foreach my $element (@filearray){
my $chvalue = 0;
if($element =~ /\.(.+?)$/){
if($1 eq 'cgi' || $1 eq 'pl' || $1 eq 'pm') {
$ftp->ascii;
#transfer in ASCII mode
$chvalue = 755;
#chmod it to 755
} else {
$ftp->binary;
$chvalue = 644;
}
print "Preparing to put $element into $directory on $domain...
+\n";
if($ftp->put($element)) {
print "$element uploaded successfully to $directory at $do
+main\n";
if($ftp->chmod($chvalue, $element)) {
print "$element successfully chmoded to $chvalue.\n";
} else {
print $ftp->message;
quit();
}
} else {
print "Couldn't put $element:\n\t" . $ftp->message;
quit();
}
} else {
if($ftp->put($element)) {
print "$element uploaded successfully to $directory at $do
+main\n"
} else {
print $ftp->message;
quit();
}
}
}
quit();
#quits, fancy that.
sub quit {
$ftp->quit();
print "Press any key to exit";
chomp(my $chomp = <STDIN>);
exit;
}
Does anyone have an idea for what's going wrong? When I run the script, it will get to the
Preparing to put $element into $directory on $domain...\n line perfectly fine, but completely stop after that. The file I'm trying to upload is all of 5 kb, so I know that it's not just taking it's time because the file is large.
Thanks,
Spidy