Ansible을 사용하는 Telnet-Cisco 스위치가 제대로 작동하지 않습니다.

Ansible을 사용하는 Telnet-Cisco 스위치가 제대로 작동하지 않습니다.

내 연구실에는 cisco 스위치가 있고 처음에는 텔넷 연결로 구성되었으므로 이를 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를 사용하여 텔넷 액세스를 확인했는데 작동했습니다.

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

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


9300>en
Password:
9300#

텔넷 세션을 시작할 때 Enter 키를 누른 다음 비밀번호 입력을 활성화해야 합니다. 이것이 플레이북에 어떻게 반영될지는 잘 모르겠습니다.

답변1

스위치는 MOTD 배너를 표시하기 전에 캐리지 리턴을 기다리므로 ansible이 찾고 있는 프롬프트를 보내지 않습니다. 이 문제를 해결하기 위해 제가 찾은 유일한 방법은 send_carriage_return 매개변수를 ansible.netcommon.telnet 모듈의 분기 버전입니다.

관련 정보