базовый скрипт telnet для копирования на флешку - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь использовать ansible для подключения по telnet к коммутаторам cisco и применяю команду copy startup-config disk0.

Кажется, что Ansible никогда не сможет передать (? I) "Имя файла назначения": "работайте, пожалуйста"через команду ожидаемого

    ---
    - hosts: all
      gather_facts: false
      connection: local
      tasks:
      - name: telnet,login and execute command
        ignore_errors: true
        expect:
        command: telnet "{{ inventory_hostname }}"
        responses:
          (?i)password: "{{ password}}"
          (?i)#: copy startup-config disk0
          (?i)"Destination filename": "{{ lookup('pipe','date') }"
        echo: yes
      register: telnet_output

Что я получаю в качестве вывода

ansible-playbook 2.7.6

файл конфигурации = /etc/ansible/ansible.cfg настроенный путь поиска модуля = [u '/root / .ansible / plugins / modules ', u' / usr / share / ansible / plugins / modules '] местоположение модуля ansible python = /usr/lib/python2.7/site-packages/ansible местоположение исполняемого файла = / usr / bin/ ansible-playbook python версия = 2.7.5 (по умолчанию, 30 октября 2018 г., 23:45:53) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] Использование /etc/ansible/ansible.cfg в качестве конфигурацииФайл / var / lib / awx / projects / 6500 / hosts не соответствует требованиям host_list, проверьте документацию плагина, если это неожиданно / var / lib / awx / projects / 6500 / hosts не соответствует требованиям скрипта, проверьте документацию плагина, если этонеожиданный

PLAYBOOK: copy-startup.yml ************************************************************************************************************************************************************************************************************* 1 воспроизведение в copy-startup.yml

ИГРАТЬ [все] ***************************************************************************************************************************************************************************************************************************** META: обработчики запуска

TASK [telnet, войти и выполнить команду] ************************************************************************************************************************************************************************************************ путь к задаче: / var / lib / awx / projects /6500 / copy-startup.yml: 6 фатально: [66.90.19.18]: СБОЙ!=> {"updated": true, "cmd": "telnet \" 66.90.19.18 \ "", "delta": "0: 00: 30.370396", "end": "2019-02-12 10:09:41.473716 "," msg ":" превышен тайм-аут команды "," rc ": null," start ":" 2019-02-12 10: 09: 11.103320 "," stdout ":" Trying 66.90.19.18 ... \ r\ r \ nПодключено к 66.90.19.18. \ r \ r \ nСохранительный символ '^]'. \ r \ r \ n \ r \ n \ r \ nПроверка доступа пользователя \ r \ n \ r \ nПароль: \ r \nLAB-6500-SUP2T # копировать startup-config disk0 \ r \ nНаправление файла [disk0]? "," stdout_lines ": [" Попытка 66.90.19.18 ... "," "," Подключено к 66.90.19.18. ",""," Escape-символ: '^]'. "," "," "," "," Проверка доступа пользователя "," "," Пароль: "," LAB-6500-SUP2T # copy startup-config disk0 ","Имя файла назначения [disk0]?"]} ... игнорирование

PLAY RECAP ************************************************************************************************************************************************************************************************************************************ 66.90.19.18: ok = 2изменено = 1 недоступно = 0 не удалось = 0

Кажется, никогда не хочется писать имя файла назначения [disk0]?Любые идеи

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019
   ---
   - hosts: '6500'
   gather_facts: true
   connection: local
   tasks:

   - name: telnet,login and execute command
     ignore_errors: true
     expect:
        command: telnet "{{ inventory_hostname }}"
        responses:
          (?i)Password: {{ password }}
         (?i)Destination filename [disk0]? : "{{ lookup('pipe','date +%Y-%m-%d-%H-%M') }} {{ inventory_hostname }}"
         (?i)#: copy startup-config disk0
         (?i){{COMMAND}}: exit
       echo: yes
      register: telnet_output

Это, кажется, лучшее решение для того, что мне нужно.Я изменил порядок операций, и это было качание,

0 голосов
/ 12 февраля 2019

(?i)"Destination filename" соответствует строке с двойными кавычками.

Вам необходимо:

responses:
    '(?i)password': "{{ password}}"
    '(?i)#': copy startup-config disk0
    '(?i)Destination filename': "{{ lookup('pipe','date') }"
...