ansible连接cisco设备报错问题
文章目录
- 问题现象
- 排查
- 为什么没有使用ssh进行连接呢?
- 安装ansible-pylibssh模块
- 参考
问题现象
inventory
如下
[test_dev]
172.16.100.254 ansible_ssh_user=cisco ansible_ssh_password='cisco' ansible_ssh_port=22 ansible_connection=ansible.netcommon.network_cli ansible_network_os=ios
ping的时候显示是正常的。
# ansible test_dev -m ping
172.16.100.254 | SUCCESS => {"changed": false,"ping": "pong"
}
但是调用cisco_commands
模块时就报错了
# ansible -vvv test_dev -m ios_command -a "commands='show version '"
The full traceback is:File "/data/apps/opt/ansible6/lib/python3.9/site-packages/ansible_collections/cisco/ios/plugins/module_utils/network/ios/ios.py", line 61, in get_capabilitiescapabilities = Connection(module._socket_path).get_capabilities()File "/data/apps/opt/ansible6/lib/python3.9/site-packages/ansible/module_utils/connection.py", line 200, in __rpc__raise ConnectionError(to_text(msg, errors='surrogate_then_replace'), code=code)
172.16.100.254 | FAILED! => {"changed": false,"invocation": {"module_args": {"commands": ["show version "],"interval": 1,"match": "all","retries": 10,"wait_for": null}},"msg": "Failed to authenticate: Authentication failed."
}
为什么会是这种情况呢,ping
的时候不是已经成功了吗?
排查
根据官方文档中的说明,设置相关变量,开启DEBUG,并记录日志:
export ANSIBLE_LOG_PATH=~/ansible.log
export ANSIBLE_DEBUG=True
查看日志,可以看到是paramiko
模块在连接设备时,出错了。
2023-02-24 19:48:03,816 p=32048 u=root n=ansible | <172.16.100.254> ANSIBLE_NETWORK_IMPORT_MODULES: running ios_command
2023-02-24 19:48:03,817 p=32058 u=root n=ansible | [DEPRECATION WARNING]: PlayContext.verbosity is deprecated, use
ansible.utils.display.Display.verbosity instead. This feature will be removed
in version 2.18. Deprecation warnings can be disabled by setting
deprecation_warnings=False in ansible.cfg.
2023-02-24 19:48:03,818 p=32058 u=root n=ansible | <172.16.100.254> ESTABLISH PARAMIKO SSH CONNECTION FOR USER: cisco on PORT 22 TO 172.16.100.254
2023-02-24 19:48:03,826 p=32058 u=root n=p=32058 u=root | paramiko [172.16.100.254] | Connected (version 2.0, client Cisco-1.25)
2023-02-24 19:48:06,408 p=32058 u=root n=p=32058 u=root | paramiko [172.16.100.254] | Authentication (publickey) failed.
2023-02-24 19:48:06,411 p=32058 u=root n=p=32058 u=root | paramiko [172.16.100.254] | Disconnect (code 2): Protocol error: expected packet type 50, got 5
2023-02-24 19:48:06,419 p=32058 u=root n=ansible | Traceback (most recent call last):File "/data/apps/opt/ansible6/lib/python3.9/site-packages/ansible/plugins/connection/paramiko_ssh.py", line 428, in _connect_uncachedssh.connect(File "/data/apps/opt/ansible6/lib/python3.9/site-packages/paramiko/client.py", line 450, in connectself._auth(File "/data/apps/opt/ansible6/lib/python3.9/site-packages/paramiko/client.py", line 781, in _authraise saved_exceptionFile "/data/apps/opt/ansible6/lib/python3.9/site-packages/paramiko/client.py", line 768, in _authself._transport.auth_password(username, password)File "/data/apps/opt/ansible6/lib/python3.9/site-packages/paramiko/transport.py", line 1564, in auth_passwordreturn self.auth_handler.wait_for_response(my_event)File "/data/apps/opt/ansible6/lib/python3.9/site-packages/paramiko/auth_handler.py", line 245, in wait_for_responseraise e
paramiko.ssh_exception.AuthenticationException: Authentication failed.
为什么没有使用ssh进行连接呢?
再往上看,又看到
2023-02-24 19:48:03,776 p=32048 u=root n=ansible | network_os is set to ios
2023-02-24 19:48:03,776 p=32048 u=root n=ansible | <172.16.100.254> ssh type is set to auto
2023-02-24 19:48:03,777 p=32048 u=root n=ansible | <172.16.100.254> autodetecting ssh_type
2023-02-24 19:48:03,777 p=32048 u=root n=ansible | [WARNING]: ansible-pylibssh not installed, falling back to paramiko2023-02-24 19:48:03,777 p=32048 u=root n=ansible | <172.16.100.254> ssh type is now set to paramiko
2023-02-24 19:48:03,777 p=32048 u=root n=ansible | <172.16.100.254> 32054 1677239283.52887: trying /data/apps/opt/ansible6/lib/python3.9/site-packages/ansible/plugins/connection/__pycache__32054 1677239283.52905: trying /data/apps/opt/ansible6/lib/python3.9/site-packages/ansible/plugins/connection
- ssh的模式设置的是
auto
- 因为没有找到
ansible-pylibssh
的库,所以改用了paramiko
的库 - 然后
paramiko
使用密钥验证就报错了(这里没有配置相关密钥)
那这样就好办了,直接安装相关的库就可以了。
安装ansible-pylibssh模块
[root@wanghaifeng-test payease-haifeng-dev-ansible]# pip install ansible-pylibssh
Looking in indexes: https://pypi.tuna.tsinghua.edu.cn/simple
Collecting ansible-pylibsshDownloading https://pypi.tuna.tsinghua.edu.cn/packages/a8/27/c1eb3367cf63059a016b45dd987a6a88922a643b94b2ab28f0d0d89ea774/ansible_pylibssh-1.1.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.5 MB)━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.5/2.5 MB 989.3 kB/s eta 0:00:00
Installing collected packages: ansible-pylibssh
Successfully installed ansible-pylibssh-1.1.0
WARNING: You are using pip version 22.0.4; however, version 23.0.1 is available.
You should consider upgrading via the '/data/apps/opt/ansible6/bin/python -m pip install --upgrade pip' command.
安装之后,问题就解决了,命令也可以正常运行了。
安装后相关的日志
2023-02-24 19:52:59,458 p=32110 u=root n=ansible | <172.16.100.254> ssh type is set to auto
2023-02-24 19:52:59,458 p=32110 u=root n=ansible | <172.16.100.254> autodetecting ssh_type
2023-02-24 19:52:59,458 p=32110 u=root n=ansible | <172.16.100.254> ssh type is now set to libssh
参考
- https://docs.ansible.com/ansible/latest/network/user_guide/network_debug_troubleshooting.html : Network Debug and Troubleshooting Guide
ansible连接cisco设备报错问题相关推荐
- mysql8.0client_navicat 连接mysql8.0 报错client does not support authentication
navicat 连接mysql8.0 报错client does not support authentication,解决方法: 打开windows Powershell,输入以下命令 ,加红加粗的 ...
- jmeter连接MySQL出错_MySQL数据库之jmeter连接mysql数据库报错Cannot create PoolableConnectionFactory...
本文主要向大家介绍了MySQL数据库之jmeter连接mysql数据库报错Cannot create PoolableConnectionFactory ,通过具体的内容向大家展现,希望对大家学习M ...
- mysql报错乱码_连接mysql服务器报错时,出现乱码
页头用了 header('content-type:text/html;charset=utf-8'); try { $this->dbo=new PDO($dsn,$dbuser,$dbpas ...
- 连接mysql报错有乱码_连接mysql服务器报错时,出现乱码
页头用了 header('content-type:text/html;charset=utf-8'); try { $this->dbo=new PDO($dsn,$dbuser,$dbpas ...
- pycharm远程连接服务器(docker)调试+ssh连接多次报错
一,登入服务器建docker nvidia-docker run -it -v ~/workspace/:/workspace -w /workspace/ --name=fzh_tf --shm ...
- sqlyog for MySQL远程连接的时候报错mysql 1130的解决方法
通过Navicat for MySQL远程连接的时候报错mysql 1130的解决方法 今天在用远程连接Mysql服务器的数据库,不管怎么弄都是连接不到. 错误代码是1130,ERROR 1130: ...
- IDEA 2020.3 连接mysql数据库报错解决
IDEA 2020.3 连接mysql数据库报错解决 问题: Cannot connect to "Connection". The server time zone value ...
- 【MySQL】MySQL 8 IDEA连接本地MySQL报错 Host DESKTOP-MISSMJIJ is not allowed to connect to this serv
1.背景 在window10 下开发,MySQL 8 IDEA连接本地MySQL报错 MySQL 8 Host DESKTOP-MISSMJIJ is not allowed to connect t ...
- Navicat 用ssh通道连接时总是报错 (报错信息:SSH:expected key exchange group packet form serve...
转:https://blog.csdn.net/qq_27463323/article/details/76830731 之前下了一个Navicat 11.0 版本 用ssh通道连接时总是报错 (报错 ...
- Navicat连接本地数据库报错问题解决方案
Navicat连接本地数据库报错问题解决方案 参考文章: (1)Navicat连接本地数据库报错问题解决方案 (2)https://www.cnblogs.com/wjah110/p/9811448. ...
最新文章
- css 背景图怎么设置自动填充满_CSS-布局与定位
- AbstractListView源码分析5
- [LeetCode] Interleaving String
- MQTT代理服务器特性对比
- centos LAMP菜鸟搭建过程
- 第一易,唯一难,为什么它是ofo、天学网的不二选择
- 如何把手机投影到电脑,电脑可以当作电视一样被投屏
- 《WEB安全渗透测试》(29)记一次HOST头投毒漏洞
- 【PhpSelenium】2.基本使用
- 三星手机「我的文件」应用闪退问题的解决方法
- 修改win10 ntp服务器地址,修改win10 ntp服务器地址
- 怎么把人物模型走路、跑步动画拼接起来
- 20182316胡泊 第2,3周学习总结
- 线控转向,包含设计说明书,carsim模型,MATLAB Simulink模型
- 阿里云(云呼叫中心)API接口
- 银盛支付再吃罚单!严监管下行业乱象难禁,平台发力B端应做到合规当先
- 把Excel批注的“红三角”放在单元格左上角_设置另类批注
- 关于Raptor的简单使用
- 软著申请具体需要哪些步骤呢?
- 瑞芯微RK3568详细参数以及应用场景介绍
热门文章
- WotoKOL卧兔网络:全球品牌出海峰会讲述站外引流技巧,探寻DTC出海流量增长点
- NOIP2007初赛普及组_阅读程序写结果3.2
- Python requests中params、data和json区别
- 雅阁更换变速箱油教程
- Consider defining a bean of type xxx.xxx.xxxxin your configura
- 区块链客户端--Python实现
- 【STM32Cube_01】软件简介以及安装明细教程
- 103-gold深入
- Android路由框架ARouter_若雪似风_新浪博客
- linux+sh++输入命令,【Linux 命令行与 shell 脚本编程大全】 14 处理用户输入