不起作用,脚本可以工作,但在函数内部,脚本不起作用。
import telnetlib
import sys
def teltest():
host = "192.168.2.2"
user = "admin"
password = "admin"
tn = telnetlib.Telnet(host)
tn.read_until("Username:")
tn.write(user + "\n")
tn.read_until("Password:")
tn.write(password + "\n")
tn.write("enable\n")
tn.write("config t\n")
tn.write("interface eth 0/0/13\n")
tn.write("description TEST\n")
teltest()
为什么以及如何解决?
答案 0 :(得分:0)
这是因为函数在正确终止连接之前返回,而设备的另一端处于元状态。如评论中所述,最后添加一个睡眠可以腾出空间来清理连接,从而执行写入设备的内容。
Telnet.write(buffer)将字符串写入套接字,使任何IAC加倍 字符。如果连接被阻止,这可能会阻止。可能会提高 如果连接已关闭,则为socket.error。
import telnetlib
import sys
def teltest():
host = "192.168.2.2"
user = "admin"
password = "admin"
tn = telnetlib.Telnet(host)
tn.read_until("Username:")
tn.write(user + "\n")
tn.read_until("Password:")
tn.write(password + "\n")
tn.write("enable\n")
tn.write("config t\n")
tn.write("interface eth 0/0/13\n")
tn.write("description TEST\n")
time.sleep(1)
teltest()
尽管op得到了评论的帮助,但仍将此作为社区利益的答案。