【问题标题】:python telnet function with __main__ global name is not defined未定义具有 __main__ 全局名称的 python telnet 函数
【发布时间】:2014-10-22 00:24:47
【问题描述】:

我是使用 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

你可以帮忙处理这个案子吗?

【问题讨论】:

    标签: python function global main


    【解决方案1】:

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

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

    换行:

    def pingfunc():
    

    与:

    def pingfunc(domainname):
    

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

    【讨论】:

    • 感谢 alfasin,我尝试在 pingfunc() 中放置“全球域名”,但它不起作用,您能指导我吗?谢谢
    • @marcohk 如果您已经定义了domainname,只需将其作为参数传递给函数:def pingfunc(domainname):... 参见上面的示例
    • @marcohk:如果你没有全局变量,那显然是行不通的。
    • @alfasin,将其更改为 def pingfunc(domainname): 时,内部服务器错误 500,我不确定是什么问题
    • 似乎telnet函数在使用"def pingfunc(domainname):时无法接受url,输出错误变为pingfunc(8.8.8.8)SyntaxError: invalid syntax
    猜你喜欢
    • 2017-02-03
    • 2013-08-23
    • 2013-11-12
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-10
    • 1970-01-01
    相关资源
    最近更新 更多