
本文档旨在解决在使用 Netmiko 连接到具有自定义提示符的 Linux 设备时遇到的 ReadTimeout 异常。我们将探讨如何通过使用 "generic" 设备类型或 find_prompt 方法来解决提示符检测问题,从而成功建立 SSH 连接。
问题分析在使用 Netmiko 连接到 Avocent ACS800/8000 或 ACS600/6000 等控制台服务器时,由于这些设备具有自定义的提示符(例如 --:- / cli->),而 Netmiko 默认期望提示符以 "#" 或 "$" 结尾,因此可能会出现 ReadTimeout 异常。这是因为 Netmiko 尝试执行某些 Linux 特定的会话准备操作,但这些操作可能与设备的自定义 CLI 不兼容。
解决方案以下是两种解决此问题的有效方法:
1. 使用 "generic" 设备类型将设备类型设置为 "generic" 可以禁用 Netmiko 内置的提示符检测和会话准备,从而允许您直接与设备的 CLI 进行交互。
示例代码:
from netmiko import ConnectHandler
device = {
"host": "your_device_ip",
"username": "your_username",
"password": "your_password",
"device_type": "generic",
"session_log": "netmiko_session.log",
}
try:
with ConnectHandler(**device) as net_connect:
print(net_connect.find_prompt())
# 在这里执行你的命令
output = net_connect.send_command("show version")
print(output)
except Exception as e:
print(f"连接失败: {e}") 注意事项:
Teleporthq
一体化AI网站生成器,能够快速设计和部署静态网站
182
查看详情
- 使用 "generic" 设备类型时,您需要手动处理提示符,并确保发送的命令与设备的 CLI 兼容。
- session_log 选项可以帮助您调试连接问题。
find_prompt 方法可以发送一个换行符,并将返回的内容标记为提示符。这可以帮助 Netmiko 识别自定义提示符。
示例代码:
from netmiko import ConnectHandler
device = {
"host": "your_device_ip",
"username": "your_username",
"password": "your_password",
"device_type": "linux", # 或者其他更合适的设备类型
"session_log": "netmiko_session.log",
"auto_connect": False
}
try:
net_connect = ConnectHandler(**device)
net_connect.establish_connection()
prompt = net_connect.find_prompt()
print(f"Detected prompt: {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 之前,需要先建立连接。
- device_type 可以设置为 "linux" 或其他更合适的设备类型,具体取决于设备的特性。
- 确保在完成操作后断开连接,以释放资源。
当 Netmiko 无法自动检测设备的提示符时,可以使用 "generic" 设备类型或 find_prompt 方法来解决问题。选择哪种方法取决于您的具体需求和设备的特性。使用 "generic" 类型需要手动处理提示符,而 find_prompt 方法可以自动检测提示符,但需要在建立连接后才能使用。通过结合这些方法,您可以成功地使用 Netmiko 连接到具有自定义提示符的 Linux 设备,并执行自动化任务。
以上就是使用 Netmiko 连接具有自定义提示符的 Linux 设备的详细内容,更多请关注知识资源分享宝库其它相关文章!
相关标签: linux word session Generic linux ssh 自动化 大家都在看: 查看Python版本如何在Linux源码安装中查看 查看Python版本的源码安装查询教程 查看Python版本怎样在Linux终端用完整命令查询 查看Python版本的完整命令使用技巧 查看Python版本怎样在Linux软件包中查看 查看Python版本的包管理查询方法 解决Linux系统下用户安装程序(如Pipenv)不在PATH环境变量的问题 在 Linux 系统中如何解决 DataCap 验证码无法显示的问题?






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