Codice PHP:
<?php
error_reporting("E_ALL &~ E_NOTICE &~ E_WARNING");
function Line($t) {
$a = fopen("actions.log", "a");
fwrite($a, $t);
fclose($a);
}
if($argc < 4)
die("Usage: ".$argv[0]." <host> <user> <pass>");
$mode = "ascii";
$log = false;
$init = false;
$h = ftp_connect($argv[1]) or die("Error: Unable to connect at the host ".$host);
$l = ftp_login($h, $argv[2], $argv[3]) or die("Error: invalid name or password");
print "Type 'help' for a list of commands\n";
print "For files big more than 1 mb the download takes more time\n";
while(1) {
$dir = ftp_pwd($h).((ftp_pwd($h) == "/") ? "" : "/");
if($log === true && $init === false) {
if(file_exists("actions.log"))
unlink("actions.log");
$a = fopen("actions.log", "a");
fwrite($a, "Inizio sessione ".date("D d/m/Y G:i:s")."\r\n");
fclose($a);
$init = true;
}
print "ftp >";
$c = fread(STDIN, 50);
$c = trim($c);
$c = str_replace("\n","",$c);
$c = str_replace("\r\n","",$c);
if(eregi("up", $c) && $c != "dup") {
$a = explode(" ",$c);
$f = ftp_put($h, $dir.$a[1], $a[1], (($mode == "ascii") ? FTP_ASCII : FTP_BINARY));
print ($f) ? "File upload successful\n" : "Error: file upload unsuccessful\n";
} elseif(eregi("del", $c)) {
$a = explode(" ",$c);
$f = ftp_delete($h, $dir.$a[1]);
print ($f) ? "File delete successful\n" : "Error: file delete unsuccessful\n";
} elseif(eregi("get", $c)) {
$a = explode(" ",$c);
$f = ftp_get($h, getcwd()."/".$a[1], $dir.$a[1], FTP_BINARY);
print ($f) ? "File download successful\n" : "Error: file download unsuccessful\n";
} elseif(eregi("rename", $c)) {
$a = explode(" ",$c);
$f = ftp_rename($h, $dir.$a[1], $dir.$a[2]);
print ($f) ? "File rename successful\n" : "Error: file rename unsuccessful\n";
} elseif(eregi("mkdir", $c)) {
$a = explode(" ",$c);
$f = ftp_mkdir($h, $dir.$a[1]);
print ($f) ? "Directory create successful\n" : "Error: directory create unsuccessful\n";
} elseif(eregi("rmdir", $c)) {
$a = explode(" ",$c);
$f = ftp_rmdir($h, $dir.$a[1]);
print ($f) ? "Directory delete successful\n" : "Error: directory delete unsuccessful\n";
ftp_cdup($h);
$dir = ftp_pwd($h);
} elseif($c == "dir") {
print join("\n",ftp_nlist($h, $dir))."\n";
} elseif(eregi("goto", $c)) {
$a = explode(" ",$c);
$f = ftp_chdir($h, $dir.$a[1]);
print "New work directory: ".$dir.$a[1]."\n";
} elseif($c == "binary") {
$mode = "binary";
print "Mode changed in ".$mode."\n";
} elseif($c == "dup") {
ftp_cdup($h);
print "New work directory: ".ftp_pwd($h)."\n";
continue;
} elseif($c == "root") {
ftp_chdir($h, "/");
print "New work directory: ".ftp_pwd($h)."\n";
} elseif($c == "ascii") {
$mode = "ascii";
print "Mode changed in ".$mode."\n";
} elseif($c == "quit") {
break;
} elseif(eregi("log", $c)) {
$a = explode(" ",$c);
$log = ($a == "on") ? true : false;
print "Log set ".$a[1]."\n";
} elseif($c == "help") {
print "This is a list of commands:\n";
print "up <file> \t\t Upload a file\n";
print "del <file/dir> \t\t Delete a file\n";
print "get <file> \t\t Download a file\n";
print "rename <file/dir> \t Rename a file\n";
print "mkdir <dir> \t\t Make a directory\n";
print "rmdir <dir> \t\t Delete a directory\n";
print "dir \t\t\t Show files in the current work directory\n";
print "goto <dir> \t\t Go to a directory\n";
print "binary \t\t\t Set the ftp_mode at binary\n";
print "dup \t\t\t Go to the top directory\n";
print "root \t\t\t Return to the root directory\n";
print "ascii \t\t\t Set the ftp_mode at ascii\n";
print "quit \t\t\t Exit from the shell\n";
print "help \t\t\t Show this help\n";
} else {
print "Invalid command\n";
}
}
ftp_quit($h);
exit(1);
?>
Come vedete, se do il comando