#!/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 "Luke's Neato FTP Script, Version 1.1\n";
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;
}
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;
}
In reply to ftp.pl
by Spidy