2013-03-03 8 views
9

私は匿名FTPスキャナをbulidしようとしていますが、関数Xを呼び出す際にエラーが発生しました。私はループを使用せず、IPを1つずつ送信すれば同じコードが機能します。Pythonエラー:X()はちょうど1つの引数(与えられた8)を受け取ります

エラーがある:X()Threadオブジェクトを構築する場合、正確に1引数(8が与えられた)

from ftplib import FTP 
import ipcalc 
from threading import Thread 


def X (ip): 
    try: 
     ftp = FTP(ip) 
     x = ftp.login() 
     if 'ogged' in str(x): 
      print '[+] Bingo ! we got a Anonymous FTP server IP: ' +ip 
    except: 
     return 


def main(): 
    global ip 
    for ip in ipcalc.Network('10.0.2.0/24'): 
     ip = str(ip) 
     t = Thread (target = X, args = ip) 
     t.start() 
main() 

答えて

16

をとり、argsは、引数の順序でなければなりませんが、あなたは、文字列で渡しています。これにより、Pythonは文字列を繰り返し処理し、各文字を引数として扱います。プレスチェックマーク -

t = Thread (target = X, args = [ip]) 
+0

ビンゴ、おかげで百万 – Hussam

+1

@Hussam:

t = Thread (target = X, args = (ip,)) 

またはリスト:

あなたは一つの要素を含むタプルを使用することができます。 – Malvolio

関連する問題