使用 ansible 到 cisco 交换机的 telnet 无法正常工作

使用 ansible 到 cisco 交换机的 telnet 无法正常工作

我的实验室中有一台 cisco 交换机,因为它们最初配置了 telnet 连接,所以我想将其用于 ansible 的初始配置(SSH 访问、主机名、域...等)。

我正在尝试使用这个模块: https://docs.ansible.com/ansible/latest/collections/ansible/netcommon/telnet_module.html#parameters

这是我当前的剧本,但它没有按预期工作:

- name: Initial access with Telnet
  connection: local
  gather_facts: false
  hosts: wired
  tasks:
  - name: set SSH with telnet connection # Configure SSH access to the netowrk devices
    ansible.netcommon.telnet:
      port: 14038
      password: "mainpass"
      send_newline: yes
      prompts:
      - '[>]'
      commands:
      - enable

当我运行此剧本时,我在 CLI 上没有得到任何信息,并且它会一直保持这种状态,直到我终止它:

sumaia@main-srv:~/ansible$ ansible-playbook init.yaml

PLAY [Initial access with Telnet] ***********************************************************************************************************************************************************************************************

TASK [set SSH with telnet connection] *******************************************************************************************************************************************************************************************
^C [ERROR]: User interrupted execution
sumaia@main-srv:~/ansible$

我用 putty 验证了 telnet 访问,它有效:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
To log in to this device, use the following password/credentials:

enable password mainpass
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!


9300>en
Password:
9300#

当我启动 telnet 会话时,我需要按 Enter 键然后启用才能输入密码,不确定这将如何反映在剧本中。

答案1

我想你会发现开关在显示 MOTD 横幅之前等待回车,因此它永远不会发送 ansible 正在寻找的提示,我发现解决此问题的唯一方法是将 send_carriage_return 参数添加到 ansible 的分叉版本.netcommon.telnet 模块。

相关内容