【问题标题】:Nested telnet in python - Telnet within telnetpython中的嵌套telnet - Telnet中的Telnet
【发布时间】:2018-01-12 16:57:13
【问题描述】:

我正在尝试自动化一个过程,在该过程中我将远程登录到路由器 A,然后从该路由器 A 我将再次远程登录到路由器 B。我有远程登录到RouterA的代码,它工作得很好,但我无法从RouterA远程登录到RouterB。会话变得无响应。我做错了什么。有人可以指导我吗?

Below is my code:

import os
import telnetlib
import re

def telNetCall():
 host  = "15.xx.xx.xx"
 user  = "admin"
 password = "password"
 enable_password = "enable_password"
 telnet  = telnetlib.Telnet(host) 


 telnet.read_until('Username: ', 3)
 telnet.write(user + '\r')
 telnet.read_until('Password: ', 3)
 telnet.write(password + '\r')
 telnet.write('enable' + '\r\n')
 telnet.write(enable_password + '\r\n')
 telnet.read_until("#")
 telnet.write("telnet 20.xx.xx.xx" + '\r\n')
 telnet.read_until('Username: ', 3)
 telnet.write(user + '\r')
 telnet.read_until('Password: ', 3)
 telnet.write(password + '\r')
 telnet.write('enable' + '\r\n')
 telnet.write(enable_password + '\r\n')
 telnet.write("show logg"+ "\r\n")
 telnet.write('exit' + '\r')
 a = telnet.read_all() 
 f = open(host, 'w')
 f.write(str(a))
telNetCall()

代码正在运行,但执行需要很长时间。我相信我正在做一些不允许代码有效运行的事情。如果代码有任何问题,欢迎提出建议。非常感谢任何帮助。

我已经找出了错误,现在它对我来说工作正常。现在几乎不需要 5 秒。

【问题讨论】:

  • 为什么你经常只发送回车,而不是 cr-lf?您是否尝试过手动执行此操作?你说的输出是否应该在你的脚本中?
  • 感谢您的回复。我可以手动远程登录到路由器 A,然后我可以远程登录到路由器 B。它工作正常。它只是没有通过脚本发生。
  • 我最近发现代码确实有效。唯一的问题是完成执行大约需要 8-9 分钟。这意味着我正在做一些不正确的事情。主要是执行最后 5 个命令需要花费大量时间。如果有人能对此有所了解,我将不胜感激。
  • 您可能希望将其添加为您的问题的编辑,因为这会再次将其撞到首页。

标签: python nested telnet


【解决方案1】:

您可以使用其他 read_xx() 函数,例如 read_until()read_eager()

见下方Telnet.read_all()的评论:

读取所有数据直到 EOF;阻塞直到连接关闭。

【讨论】:

    猜你喜欢
    • 2014-05-05
    • 2011-05-30
    • 1970-01-01
    • 2020-03-15
    • 2011-12-20
    • 2016-06-21
    • 2017-10-28
    • 2011-12-07
    • 2018-03-26
    相关资源
    最近更新 更多