Telnet脚本在函数内部不起作用

时间:2017-05-23 15:36:13

标签: python python-2.7 function telnetlib

不起作用,脚本可以工作,但在函数内部,脚本不起作用。

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()

为什么以及如何解决?

1 个答案:

答案 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得到了评论的帮助,但仍将此作为社区利益的答案。