banner

Простейший многопоточный чекер ftp

Простейший чекер, ftp акки кидать в ftp.txt вида ftp.narod.ru:21|user|password.Порт указывать обязательно.В начале скрипта можно установить количество потоков,разделитель и таймаут.Если при подключении к ftp возникает ошибка, то аккаунт попадает в bad.txt, иначе в good.Ошибками может служить:таймаут подключения,неправильный логин и т.д.

# coding:utf-8
# author: Rushter
# site: http://klipner.ru
from ftplib import FTP
import Queue
import threading
import urllib
import time
queue = Queue.Queue()
lock = threading.RLock()
threads_count = 10
separator = "|"
timeout = 3
def worker():
    global queue
    while True:
        try:
            target =  queue.get_nowait()
        except Queue.Empty:
            return 
        check(target)
def write(data,s):
    lock.acquire()
    if s:
        put = open("good.txt","a")
    elif not s:
        put = open("bad.txt","a")
    put.write(data+"\n")
    put.close()
    lock.release()
def check(qq):
    qq = qq.strip("\r\n").split(separator)
    host = qq[0]
    host,port = urllib.splitport(host)
    ftp = FTP()
    try:
        ftp.connect(host, port, timeout)
        ftp.login(qq[1],qq[2])
        write("|".join(qq),True)
        ftp.close()
    except:
        write("|".join(qq),False)
def main():
    print "Check started"
    file = open("ftp.txt").readlines()
    for f in file:
        queue.put(f)
    for _ in xrange(threads_count):
        thread_ = threading.Thread(target=worker)
        thread_.start()
        while threading.active_count() >1:
            time.sleep(1)
    print "DONE"
main()

10 Ответов на “Простейший многопоточный чекер ftp”

  1. TopperHarley сказал:

    Спасибо, все теперь на Питоне делаешь? :)

  2. rushter сказал:

    Php не торт, для кросплат решений питон меня устраивает на 200%,ну ещё perl иногда балуюсь :) .

  3. Nosaer сказал:

    Собственно дней 10 назад начал учить Python3. И в тот момент когда начал читать про модуль threading, выскочило уведомлениее RSS об этой теме.
    Прямо таки совпадение какое то)

  4. user сказал:

    Check started
    Traceback (most recent call last):
    File «checker.py», line 52, in ?
    main()
    File «checker.py», line 49, in main
    while threading.active_count() >1:
    AttributeError: ‘module’ object has no attribute ‘active_count’

  5. Fredy сказал:

    и у меня

    ~# python p.py
    Check started
    Traceback (most recent call last):
    File «p.py», line 52, in
    main()
    File «p.py», line 49, in main
    while threading.active_count() >1:
    AttributeError: ‘module’ object has no attribute ‘active_count’

  6. rushter сказал:

    Версия питона какая ?

  7. РЕКЛАМА И ОБЪЯВЛЕНИЯ :: [php][python] быдлокод за еду | seo сказал:

    [...] 2. Чекер ftp аккаунтов Допустим, есть файл со списком ftp-аккаунтов, например к фришникам, из которых некоторая часть уже умерла. Скрипт возьмет на входе файл с аккаунтами и разложит его не два файла – список хороших аккаунтов, к которым удалось подключиться; и список плохих аккаунтов к которым подключиться не удалось. Скрипт многопоточный, Python 3. 10 wmz (имеется бесплатный аналог ) [...]

  8. Flisk сказал:

    Добрый вечер
    Подскажите, в чем может быть проблема – запускаю скрипт на денвере (Питон 2.5), выдает ошибку 500.

  9. rushter сказал:

    Запускать надо просто из под интерпиртатора python, а не через денвер. Ставите интерпретатор и запускайте из консоли.

  10. Flisk сказал:

    Да, с отдельно установленного Питона все запустилось.
    Спасибо вам.

Оставить комментарий