banner

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

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

# coding:utf-8
# author: Rushter
# site: http://rushter.com
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()
  • http://topperharley.ru TopperHarley

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

  • http://rushter.ru rushter

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

  • http://rsn-nsr.blogspot.com/ Nosaer

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

  • 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’

  • 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’

  • http://rushter.ru rushter

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

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

  • Flisk

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

  • http://rushter.com rushter

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

  • Flisk

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