Scritto a marzo dell'anno scorso l'update del 17 novembre è solamente dei commenti.. si poteva fare molto meglio.
Codice:
#!/usr/bin/perl
=about
General Info...
-----------------------------------
Perl\Tk - FTP Client - 14 Apr 2008
updated - 17 Nov 2008
by athos - staker[at]hotmail[dot]it
-----------------------------------
Starting...
----------------------------
$site = [your FTP host]
$usr = [your FTP username]
$pwd = [your FTP password]
----------------------------
Example...
-----------------------------
$site = "ftp.altervista.org";
$usr = "ftp";
$pwd = "anarchy";
-----------------------------
Usage...
--------------------------------------------------------
perl [FTP.pl] [FTP Host] [FTP Username] [FTP Password];
perl ftp.pl ftp.altervista.org ftp anarchy
--------------------------------------------------------
NOTE:
-1 you need "Net::FTP" library;
-2 linux\windows platform
-3 commands help,put,dir,get,del,rdir,mkdir,exit,quit,rename,binary,cd
-4 released under GPLv3 license
=cut
use strict;
use warnings;
use Net::FTP;
use Tk;
my ($site,$usr,$pwd,$ftp,$dir,@dir,$put,$list,$file,$get,$mdir,$ddel,$del,$cd,$rfile,$bin,$ren,$help,$mw,$command);
$site = shift;
$usr = shift;
$pwd = shift or die "Usage: perl $0 [FTP Host] [FTP Username] [FTP Password]\n";
$ftp = Net::FTP->new($site);
if(!$ftp->login($usr,$pwd)) {
print "Login Error!\n";
exit;
}
sub dir { #Function List
$dir = MainWindow->new(-background => "#000000");
@dir = $ftp->ls();
foreach $list(@dir) {
$dir->Label(-text => " [-] $list\n ",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
}
}
sub put { #Function Put
$put = MainWindow->new(-background => "#000000");
$put->Label(-text => " [-] Insert Name File: ",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
$put->Entry(-textvariable => \$file,
-background => "#FFFFFF",
-foreground => "#000000"
)->pack(-anchor => "n");
$put->Button(-text => "Put File",
-background => "#000000",
-foreground => "#FFFFFF",
-activebackground => "#000000",
-activeforeground =>"#E4E4E4",
-font => "verdana 8",
-command => sub {
if($ftp->put($file)){
$put->Label(-text => " [-] File Uploaded ",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
} else {
$put->Label(-text => " [-] Error ",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
}
})->pack(-anchor => "n");
}
sub get { #Function Get
$get = MainWindow->new(-background => "#000000");
$get->Label(-text => " [-] Insert Name File: ",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
$get->Entry(-textvariable => \$file,
-background => "#FFFFFF",
-foreground => "#000000",
-font => "verdana 8"
)->pack(-anchor => "n");
$get->Button(-text => "Get File",
-background => "#000000",
-foreground => "#FFFFFF",
-activebackground => "#000000",
-activeforeground =>"#E4E4E4",
-font => "verdana 8",
-command => sub {
if($ftp->get($file)){
$get->Label(-text => " [-] Download Complete",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
} else {
$get->Label(-text => " [-] Error ",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
}
})->pack(-anchor => "n");
}
sub del{ #Function F.Delete
$del = MainWindow->new(-background => "#000000");
$del->Label(-text => " [-] Insert Name File: ",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
$del->Entry(-textvariable => \$file,
-background => "#FFFFFF",
-foreground => "#000000",
-font => "verdana 8"
)->pack(-anchor => "n");
$del->Button(-text => "Delete File",
-background => "#000000",
-foreground => "#FFFFFF",
-activebackground => "#000000",
-activeforeground =>"#E4E4E4",
-font => "verdana 8",
-command => sub {
if($ftp->delete($file)){
$del->Label(-text => " [-] File Deleted",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
} else {
$del->Label(-text => " [-] Error ",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
}
})->pack(-anchor => "n");
}
sub mdir{ #Function MkDir
$mdir = MainWindow->new(-background => "#000000");
$mdir->Label(-text => " [-] Insert Name Dir: ",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
$mdir->Entry(-textvariable => \$file,
-background => "#FFFFFF",
-foreground => "#000000",
-font => "verdana 8"
)->pack(-anchor => "n");
$mdir->Button(-text => "Create Dir",
-background => "#000000",
-foreground => "#FFFFFF",
-activebackground => "#000000",
-activeforeground =>"#E4E4E4",
-font => "verdana 8",
-command => sub {
if($ftp->mkdir($file)){
$mdir->Label(-text => " [-] Dir Created",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
} else {
$mdir->Label(-text => " [-] Error ",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
}
})->pack(-anchor => "n");
}
sub rdir{ #Function D.Delete
$ddel = MainWindow->new(-background => "#000000");
$ddel->Label(-text => " [-] Insert Name Dir: ",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
$ddel->Entry(-textvariable => \$file,
-background => "#FFFFFF",
-foreground => "#000000",
-font => "verdana 8"
)->pack(-anchor => "n");
$ddel->Button(-text => "Delete Dir",
-background => "#000000",
-foreground => "#FFFFFF",
-activebackground => "#000000",
-activeforeground =>"#E4E4E4",
-font => "verdana 8",
-command => sub {
if($ftp->rmdir($file)){
$ddel->Label(-text => " [-] Dir Deleted",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
} else {
$ddel->Label(-text => " [-] Error ",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
}
})->pack(-anchor => "n");
}
sub cd{ #Function Cd
$cd = MainWindow->new(-background => "#000000");
my $g = "YnkgYXRob3MgLSBzdGFr";
my $p = "ZXJbYXRdaG90bWFpbFtk";
my $l = "b3RdaXQ=";
$cd->Label(-text => " [-] Insert Name Dir: ",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
$cd->Entry(-textvariable => \$file,
-background => "#FFFFFF",
-foreground => "#000000",
-font => "verdana 8"
)->pack(-anchor => "n");
$cd->Button(-text => "Open Dir",
-background => "#000000",
-foreground => "#FFFFFF",
-activebackground => "#000000",
-activeforeground =>"#E4E4E4",
-font => "verdana 8",
-command => sub {
if($ftp->cd($file)){
$cd->Label(-text => " [-] Dir Opened",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
} else {
$cd->Label(-text => " [-] Error ",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
}
})->pack(-anchor => "n");
}
sub rename{ #Function Rename
$ren = MainWindow->new(-background => "#000000");
$ren->Label(-text => " [-] Insert Name File: ",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
$ren->Entry(-textvariable => \$file,
-background => "#FFFFFF",
-foreground => "#000000",
-font => "verdana 8"
)->pack(-anchor => "n");
$ren->Label(-text => " [-] Insert Name R.File: ",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
$ren->Entry(-textvariable => \$rfile,
-background => "#FFFFFF",
-foreground => "#000000",
-font => "verdana 8"
)->pack(-anchor => "n");
$ren->Button(-text => "Rename File",
-background => "#000000",
-foreground => "#FFFFFF",
-activebackground => "#000000",
-activeforeground =>"#E4E4E4",
-font => "verdana 8",
-command => sub {
if($ftp->rename($file,$rfile)){
$ren->Label(-text => " [-] Ok",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
} else {
$ren->Label(-text => " [-] Error ",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
}
})->pack(-anchor => "n");
}
sub binary{ #Function Binary
$bin = MainWindow->new(-background => "#000000");
if($ftp->binary()){
$bin->Label(-text => " [-] Ok",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
} else {
$bin->Label(-text => " [-] Error ",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
}
}
sub help { #Function Help
$help = MainWindow->new(-background => "#000000");
$help->title("Help");
$help->maxsize(200,80);
$help->minsize(200,80);
$help->Label(-text => "Dir\nPut\nGet\nDel\nRdir\nMkdir\nRename\nBinary\nHelp\n",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
}
$mw = MainWindow->new(-background => "#000000");
$mw->title("Client FTP");
$mw->maxsize(200,80);
$mw->minsize(200,80);
$mw->Label(-text => "Command",
-background => "#000000",
-foreground => "#FFFFFF",
-font => "verdana 8"
)->pack(-anchor => "n");
$mw->Entry(-textvariable => \ $command,
-background => "#FFFFFF",
-foreground => "#000000",
-font => "verdana 8"
)->pack(-anchor => "n");
$mw->Button(-text => "Execute",
-background => "#000000",
-foreground => "#FFFFFF",
-activebackground => "#000000",
-activeforeground =>"#E4E4E4",
-font => "verdana 8",
-command => sub {
&put if($command eq "put");
&dir if($command eq "dir");
&get if($command eq "get");
&del if($command eq "del");
&rdir if($command eq "rdir");
&exit if($command eq "exit");
&quit if($command eq "quit");
&mkdir if($command eq "mkdir");
&rename if($command eq "rename");
&cd if($command eq "cd");
&help if($command eq "help");
&binary if($command eq "binary");
}
)->pack(-anchor => "n");
MainLoop;