use Net::FTP::Recursive ();
$emsVersion = &readEmsVersion("emsversion.ini");
$hostname = "HOSTNAME";
$username = "USERNAME";
$passwd = "PASSWD";
#$zFile = "ems.$emsVersion.tar.Z";
$mainDir = "/ems";
$emsDir = "Panorama_V$emsVersion";
$envFile = "env.ini";
$lMainDir = "C:\\Panorama";
$lFileDir = "$lMainDir\\Panorama_V$emsVersion";
##Read environment value from env file.
&readEnv;
chdir $lFileDir
or die "Can't cd to $lFileDir";
$ftp = Net::FTP::Recursive->new($hostname, Debug => 0)
or die "Cannot connect to $hostname: $@";
$ftp->login($username, $passwd)
or die "Cannot login ", $ftp->message;
$ftp->binary;
$ftp->cwd($mainDir)
or die "Cannot change working directory ", $ftp->message;
$ftp->rmdir($emsDir, 'true');
$ftp->mkdir($emsDir)
or die "Cannot create the directory ", $ftp->message;
$ftp->cwd($emsDir)
or die "Cannot change working directory ", $ftp->message;
print "Upload...\n";
$ftp->rput()
or die "put failed ", $ftp->message;
$ftp->quit;
exit;
sub readEmsVersion {
my ($filename, $emsVersion) = @_;
open FILE, $filename
or die "Can't open the file: $filename! ($!)";
chomp($emsVersion = <FILE>);
close FILE;
$emsVersion;
} # end sub readEmsVersion
sub readEnv {
my ($name, $value, $num, @field);
open FILE, $envFile
or die "Can't open the file: $envFile! ($!)";
while(<FILE>){
chomp;
# go to next while if a line in $envFile is an empty or its first char is #
next if ($_ eq "" || /^#/);
@field = split /=/, $_;
# get the amount of @field's element
$num = @field;
die "The value should be inside the \"\", please check your $envFile file.\n" if ($num < 2);
$value = pop @field;
$name = pop @field;
$name =~ s/^\s+|\s+$//g;
$value =~ s/^"|"$|^\s+|\s+$//g;
$value =~ s/EMSVERSION/$emsVersion/g;
die "Find an empty attribute name, please check your $envFile file.\n" if ($name eq "");
if ($name eq $hostname){
$hostname = $value;
}elsif ($name eq $username){
$username = $value;
}elsif ($name eq $passwd){
$passwd = $value;
}
## next will goto here
}
close FILE;
} # end sub readEnv