FTP client

Stato
Discussione chiusa ad ulteriori risposte.

yeat

Utente Silver
4 Aprile 2009
1
0
0
56
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;
 
Stato
Discussione chiusa ad ulteriori risposte.