问题描述
我正在使用telnetlib.Telnet函数连接到telnet设备,但我不知道如何解决错误UnboundLocalError:分配前引用了本地变量'ip_addressa' 无,我看到了UnboundLocalError: local variable 'text' referenced before assignment和UnboundLocalError 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
的内部。也许有一些选项卡可以分隔正在发生的事情,所以我真的不能说。