Python错误:X()只取1个参数(给定8个)

时间:2013-03-03 18:11:53

标签: python

我正在试图建立一个匿名FTP扫描程序,但我收到一个关于调用函数X的错误,我定义了X接收了1个争论,这是IP地址,如果我不使用循环,相同的代码工作并逐个发送IP。

错误是:X()只取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 ()

1 个答案:

答案 0 :(得分:22)

构造Thread个对象时,args应该是一个参数序列,但是你传入一个字符串。这会导致Python迭代字符串并将每个字符视为参数。

您可以使用包含一个元素的元组:

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

或列表:

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