UnboundLocalError:分配前已引用局部变量“ ip_addressa”

问题描述

我正在使用telnetlib.Telnet函数连接到telnet设备,但我不知道如何解决错误UnboundLocalError:分配前引用了本地变量'ip_addressa' 无,我看到了UnboundLocalError: local variable 'text' referenced before assignmentUnboundLocalError on local variable when reassigned after first use,但这并没有帮助我,所以这是我的代码

import getpass
import sys
import telnetlib
import traceback
 
def h4ck_th3_w0rld(HOST):
    user = 'admin'
    password = 'password'
    tn = None
    try:
        tn = telnetlib.Telnet(HOST,23,11)
 
        tn.read_until("Username: ",7)
        tn.write(user + "\n")
        if password:
            tn.read_until("Password: ",7)
            tn.write(password + "\n")

    for a in range(200,256):
        for b in range(7,7):
            ip_addressa = '192.168.%d.%d' % (b,a)
          
            print(ip_addressa)
 

    tn.write("cd /var/tmp\n")
    tn.write("./busyBox telnet" + ip_addressa + "\n")
        tn.write("exit\n")
 
        print(tn.read_all())
    except Exception as e:
        #print traceback.print_exc()
        print 'Error occurred'
    finally:
        if tn:
            tn.close()
 
 
for i in range(205,206):
    for j in range(7,8):
        ip_address = '192.168.%d.%d' % (j,i)
        h4ck_th3_w0rld(ip_address)
        print(ip_address)

所以我收到了一个错误UnboundLocalError: local variable 'ip_addressa' referenced before assignment None

解决方法

请发布回溯,以便我们看到失败的行。并考虑将其简化为一个可以运行的最小示例。就看台而言,我只需要猜测。但是...

    for b in range(7,7):
        ip_addressa = '192.168.%d.%d' % (b,a)
        print(ip_addressa)

range(7,7)不会进行任何迭代,因此循环不会运行,ip_addressa未分配并且什么都不会打印。该范围应该是多少,取决于您要迭代多少个地址。

您在发布的代码中还有其他问题,例如for在“ try / except”中未正确缩进,这是一种语法错误。并且tn.write("cd /var/tmp\n")应该位于for内部。也许有一些选项卡可以分隔正在发生的事情,所以我真的不能说。