Python telnetlib确定不同的登录提示

Python telnetlib确定不同的登录提示,python,telnetlib,Python,Telnetlib,我编写了一个python脚本,可以通过读取列出不同IP地址的csv文件顺序登录到多个设备。从那里,它为每个设备输出一个文件,其中包含通过脚本传递到设备的一些命令的内容。所以我已经走了相当远了。我遇到的一个问题是,有时脚本会挂起。这是因为有些设备有不同的软件版本,不支持传递给它们的某些命令。我关注的区别是登录后的提示。例如,登录到设备类型A时,命令提示符为xyz#。设备类型B具有命令类型abc:。它是同一个制造商,只是不同的型号和/或软件版本。根据命令提示符,我知道可以在该设备上运行哪些命令,而不

我编写了一个python脚本,可以通过读取列出不同IP地址的csv文件顺序登录到多个设备。从那里,它为每个设备输出一个文件,其中包含通过脚本传递到设备的一些命令的内容。所以我已经走了相当远了。我遇到的一个问题是,有时脚本会挂起。这是因为有些设备有不同的软件版本,不支持传递给它们的某些命令。我关注的区别是登录后的提示。例如,登录到设备类型A时,命令提示符为xyz#。设备类型B具有命令类型abc:。它是同一个制造商,只是不同的型号和/或软件版本。根据命令提示符,我知道可以在该设备上运行哪些命令,而不必挂断脚本。因此,我需要能够做的是在成功登录后,根据命令提示符运行一组特定命令

如果有帮助的话,我可以发布我的一些代码,但我真正想知道的是这是否可行。如果是的话,那么指针。关于我可能尝试的一些建议。在使用Python几个月后,我知道必须有一种方法来做到这一点。我通常不发帖,因为我可以通过别人的帖子找到一个可行的解决方案。但我一直在做这件事,还没能把它拼凑起来,所以我希望能得到帮助

-谢恩

编辑

此时,我仍然无法编写确定命令提示符的代码。至少在telnet会话结束时。我可以远程登录,运行一些命令并关闭会话。然后我可以将结果写入文件。并从中读取文件以确定提示。但理想情况下,我希望能够打开telnet会话,在会话仍处于打开状态时运行命令确定提示,在会话启动时读取提示,然后根据提示运行特定命令

问题似乎是在telnet会话仍处于运行状态时无法读取任何命令输出。会话必须关闭,然后将所有输出写入文件。然后读取文件以确定命令提示符,根据提示符确定要运行的命令,然后打开新的telnet会话并运行这些命令


我是否应该接受这样一个事实:我必须关闭telnet会话,将数据写入文件,读取数据以确定提示,然后再次通过脚本的登录部分进行循环?还是我遗漏了什么?我不确定我的描述是否清楚。

我会使用一个通用接口实现这些命令,然后在我知道连接到哪个系统时使用字典检索它们:

# command set for system xyz#
def copy1(src, dest):
  pass

def list1():
  pass

# command set for system abc:
def copy2(src, dest):
  pass

def list2():
  pass


cmdDict = {
   # prompt  command set
   'xyz#':   [copy1, list1],
   'abc:'    [copy2, list2],
}

...

# guess the right commands from the prompt we have read
copyCommand = cmdDict[detected_prompt][0]
listCommand = cmdDict[detected_prompt][1]

...

# proceed normally

listCommand()
copyCommand(f1, g1)
copyCommand(f2, g2)

我将使用一个通用接口实现这些命令,然后在我知道连接到哪个系统时使用字典检索它们:

# command set for system xyz#
def copy1(src, dest):
  pass

def list1():
  pass

# command set for system abc:
def copy2(src, dest):
  pass

def list2():
  pass


cmdDict = {
   # prompt  command set
   'xyz#':   [copy1, list1],
   'abc:'    [copy2, list2],
}

...

# guess the right commands from the prompt we have read
copyCommand = cmdDict[detected_prompt][0]
listCommand = cmdDict[detected_prompt][1]

...

# proceed normally

listCommand()
copyCommand(f1, g1)
copyCommand(f2, g2)

谢谢你的回复。我将尝试将此应用到我的脚本中,并返回我的结果。感谢您的回复。我将尝试将此应用到脚本中,并返回结果。