未定义具有__main__全局名称的python telnet函数

时间:2014-08-28 08:02:30

标签: python function global main

我是使用python的新手。我打算写一个简单的telnet程序,但堆栈到位。

telnet.py

def pingfunc():
    global domainname
    host  = "1.1.1.1"
    user  = "user1"
    password = "password2"
    telnet  = telnetlib.Telnet(host)
    telnet.read_until('Username: ', 3)
    telnet.write(user + '\r')
    telnet.read_until('Password: ', 3)
    telnet.write(password + '\r')
    telnet.write("ping " +  domainname + "\r\n")
    time.sleep(3)
    print telnet.read_very_eager()

if __name__ == "__main__":
    global domainname
    query_string = cgi.parse_qs(os.environ['QUERY_STRING'])
    domainname = query_string.get('domainname', ["www.google.com"])[0]
    count = query_string.get('count', [COUNT])[0]

当我调用函数(pingfunc)时,发生以下错误:

Traceback (most recent call last):   
File "<string>", line 1, in <module>   
telnet.write("ping " +  domainname + "\r\n")   
NameError: global name 'domainname' is not defined

你能帮忙解决这个案子吗?

1 个答案:

答案 0 :(得分:3)

您在函数domainname中使用变量pingfunc()而未在之前声明它(或将其作为参数传递给函数)。

假设您在调用该函数时已定义domainname,只需更改函数签名。

更改行:

def pingfunc():

使用:

def pingfunc(domainname):

当你调用该函数时,将domainname作为参数传递。