
本文档旨在解决在使用 Netmiko 连接到基于 Linux 内核但具有自定义命令行界面 (CLI) 的设备时遇到的问题。通常,Netmiko 期望标准 Linux CLI 的提示符,如 "#" 或 "$",但某些设备可能使用不同的提示符格式。本文将介绍如何使用 "generic" 设备类型以及 find_prompt 方法来解决此问题,从而成功建立连接并进行交互。
问题分析当 Netmiko 尝试连接到具有非标准提示符的设备时,它会尝试执行一些特定于 Linux 的会话准备步骤,例如禁用分页或调整终端宽度。如果设备的自定义 CLI 不支持这些步骤,则会导致 ReadTimeout 异常,因为 Netmiko 无法检测到预期的提示符。
解决方案有两种主要方法可以解决此问题:
-
使用 "generic" 设备类型:
将 device_type 设置为 "generic" 会告诉 Netmiko 跳过任何内置的提示符检测和会话准备。这允许你建立一个基本的 SSH 连接,然后你可以手动处理提示符和命令执行。
以下是一个示例代码片段:
from netmiko import ConnectHandler device = { "host": "your_device_ip", "username": "your_username", "password": "your_password", "device_type": "generic", } try: net_connect = ConnectHandler(**device) print(net_connect.find_prompt()) # 打印当前提示符 # 执行命令 output = net_connect.send_command("show version") print(output) net_connect.disconnect() except Exception as e: print(f"连接失败: {e}")注意事项:
Teleporthq
一体化AI网站生成器,能够快速设计和部署静态网站
182
查看详情
- 使用 "generic" 设备类型时,你需要手动处理所有提示符和命令执行。
- 你需要了解设备的 CLI 语法和行为。
-
使用 find_prompt 方法:
find_prompt() 方法可以用来动态地检测设备的提示符。它发送一个换行符,并将返回的任何内容标记为提示符。这对于具有非常规或动态提示符的设备非常有用。
以下是一个示例代码片段:
from netmiko import ConnectHandler device = { "host": "your_device_ip", "username": "your_username", "password": "your_password", "device_type": "linux", # 可以尝试linux或者autodetect } try: net_connect = ConnectHandler(**device) prompt = net_connect.find_prompt() print(f"检测到的提示符: {prompt}") # 执行命令 output = net_connect.send_command("show version") print(output) net_connect.disconnect() except Exception as e: print(f"连接失败: {e}")注意事项:
Teleporthq
一体化AI网站生成器,能够快速设计和部署静态网站
182
查看详情
- 在调用 find_prompt() 之前,确保连接已成功建立。
- 如果 find_prompt() 无法检测到提示符,请检查设备的连接设置和 CLI 配置。
当使用 Netmiko 连接到具有自定义 CLI 的 Linux 设备时,可能会遇到提示符检测问题。通过使用 "generic" 设备类型或 find_prompt() 方法,可以有效地解决这些问题并成功建立连接。选择哪种方法取决于设备的具体配置和你的自动化需求。使用 "generic" 设备类型需要手动处理提示符,而 find_prompt() 方法可以自动检测提示符。请根据实际情况选择最适合你的方法。在实际应用中,可以结合使用这两种方法,例如先使用 "generic" 建立连接,然后使用 find_prompt() 动态检测提示符。
以上就是使用 Netmiko 连接具有自定义 CLI 的 Linux 设备的详细内容,更多请关注知识资源分享宝库其它相关文章!
相关标签: linux word Generic linux ssh 自动化 大家都在看: 查看Python版本怎样在Linux软件包中查看 查看Python版本的包管理查询方法 解决Linux系统下用户安装程序(如Pipenv)不在PATH环境变量的问题 在 Linux 系统中如何解决 DataCap 验证码无法显示的问题? Linux 定时任务实战:Python 脚本自动化执行配置 机器学习模型部署:TensorFlow Serving 在 Linux 的配置






发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。