앤서블 텔넷이 작동하지 않습니다

앤서블 텔넷이 작동하지 않습니다

초기 구성을 푸시하기 위해 Ansible Expect 모듈과 함께 telnet 명령을 사용하려고 하는데 작동하지 않습니다. 응답 부분에 문제가 있는 것 같습니다. 여기 내 플레이북이 있습니다.

- hosts: wired
  gather_facts: false
  connection: local
  tasks:
  - name: telnet,login and execute command
    ignore_errors: no
    expect:
      command: telnet "{{ inventory_hostname }}" 2009
      responses:
        .*>: "enable"
        .*Password: "mainpass"
        .*#: "show runn | in hostname"
    register: telnet_output
  - name: Debug output
    debug: var=telnet_output.stdout_lines

터미널에서 원격으로 로그인하려고 하면 다음과 같은 메시지가 나타납니다.

Trying 10.1.1.1...
Connected to switch.lab.local.
Escape character is '^]'.

Enter를 눌러야 합니다. 그러면 다음이 표시됩니다.

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

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


switch>

그런 다음 활성화 명령을 입력해야 했고 활성화 비밀번호를 묻는 메시지가 표시되었습니다.

switch>enable
Password: 
switch#

위 내용을 내 플레이북의 응답 섹션으로 번역할 수 없습니다. 실행하면 다음과 같은 내용이 표시됩니다.

fatal: [switch]: FAILED! => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": true,
    "cmd": "telnet \"switch\" 2009",
    "delta": "0:00:00.312863",
    "end": "2022-11-08 15:01:27.707396",
    "invocation": {
        "module_args": {
            "chdir": null,
            "command": "telnet \"switch\" 2009",
            "creates": null,
            "echo": false,
            "removes": null,
            "responses": {
                ".*#": "show runn | in hostname",
                ".*>": "enable",
                ".*Password": "mainpass",
                "Trying 10.1.1.1....*": "\n",
                "telnet: Unable to connect to remote host: Connection refused": ""
            },
            "timeout": 30
        }
    },
    "msg": "non-zero return code",
    "rc": 1,
    "start": "2022-11-08 15:01:27.394533",
    "stdout": "Trying 10.1.1.1...\r\ntelnet: Unable to connect to remote host: Connection refused",
    "stdout_lines": [
        "Trying 10.1.1.1...",
        "telnet: Unable to connect to remote host: Connection refused"
    ]
}

답변1

연결 거부됨 메시지가 표시되므로 Ansible 연결이 예상/원하는 대로 작동하지 않는 것으로 가정합니다. Ansible은 네트워크 장치를 처리하기 위한 특수 모듈을 구축했습니다. 여기를 참조하세요.https://docs.ansible.com/ansible/latest/network/getting_started/network_differences.html

가장 좋은 방법은 설명서를 읽고 설정 방법을 배우는 것이라고 생각합니다. 또한 텔넷은 일반 텍스트로 유선을 통해 이동하므로 장치가 지원하는 경우 실제로 SSH 또는 HTTPS API로 업그레이드해야 합니다.

관련 정보