gpt4 book ai didi

Python telnetlib 确定不同的登录提示

转载 作者:太空宇宙 更新时间:2023-11-03 19:19:35 26 4
gpt4 key购买 nike

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

如果有帮助的话,我可以发布一些代码,但我真正想知道的是这是否可能。如果是这样,那么指针。关于我可能尝试的一些建议。使用 Python 几个月后,我知道必须有一种方法可以做到这一点。我通常不发帖,因为我可以研究其他人的帖子并制定可行的解决方案。但我已经在这方面做了一些工作,但无法将其拼凑在一起,所以我需要帮助。

-肖恩

编辑

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

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

我是否应该接受这样一个事实:我必须关闭 telnet session ,将数据写入文件,读取它以确定提示,然后再次循环返回脚本的登录部分?或者我错过了什么?不确定我的描述是否清楚。

最佳答案

我将使用通用接口(interface)来实现命令,然后当我知道我连接到哪个系统时使用字典来检索它们:

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

关于Python telnetlib 确定不同的登录提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10236972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com