Почему я получаю ошибку при инициализации окисленного? - PullRequest
0 голосов
/ 24 апреля 2019

Я новичок в использовании Oxidized на сервере Ubuntu 16.046.Я пытаюсь настроить Oxidized для управления конфигурацией моего коммутатора Cisco.

config:

username: muhsin
password: muhsin
model: cisco
interval: 3600
use_syslog: false
debug: false
threads: 30
timeout: 20
retries: 3
prompt: !ruby/regexp /^([\w.@-]+[#>]\s?)$/
rest: 0.0.0.0:8888
vars:
    enable: muhsin
groups: {}
pid: /home/oxidized/.config/oxidized/pid
input:
     default: ssh, telnet
     debug: false
     ssh:
     secure: false
output:
  default: file
  file:
    directory: /home/oxidized/configs
source:
   default: csv
   csv:
     file: /home/oxidized/.config/oxidized/router.db
     delimiter: !ruby/regexp /:/
   map:
      name: 0
      model: 1
      username: 2
      password: 3
    vars_map:
      enable: 4
    remove_secret: true
model_map:
cisco: ios

router.db:

192.168.223.10:cisco:muhsin:muhsin:muhsin

Когда я запускаю окисленный, я получаюследующая ошибка:

Ошибка загрузки конфигурации: (): не удалось найти ожидаемый ключ при анализе сопоставления блоков в строке 27 столбца 4.

Что я делаю не так?

1 Ответ

0 голосов
/ 24 апреля 2019

То, что вы делаете неправильно, использует непоследовательный отступ, что затрудняет, особенно новичку, использующему YAML, обнаружение того, что идет не так.

  • Вы делаете отступ для сопоставления, которое является значением дляклавиша vars с четырьмя позициями.
  • Вы ставите в соответствие отображение, которое является значением для ключа input с пятью позициями.
  • Вы делаете отступ для сопоставления, являющегося значением для ключа output с двумя позициями.
  • Вы делаете отступ для сопоставления, являющегося значением для ключа mapс тремя позициями.

Теперь это все разрешено, но делает ваш файл менее читаемым для людей.Но то, что не допускается, это то, что сопоставление является значением с source, частично с тремя позициями (ключи default, csv и map) и частично с four позиции (vars_map, remove_secret).

Обратите внимание, что для YAML существуют парсеры, которые не выдают ошибку (хотя они должны это делать), и разбирают это так, как будто vars_map и remove_secret имеют отступ с целым числом password.

То, что вы получаете строку 27 в качестве указания на ошибку, состоит в том, что синтаксический анализатор не может правильно проанализировать конец, отображение, начинающееся на этой строке (т. Е. Отображение, начинающееся с пары ключ-значение default: csv.

Программа Oxidized может быть более удобной для пользователя, например, если вы используете мой синтаксический анализатор ruamel.yaml (для Python), вы получите сообщение об ошибке, которое указывает на эту ошибку более точно и гораздо более полезным способом, так что это не проблема YAML,но Oxidized не является удобным для пользователя:

ruamel.yaml.parser.ParserError: while parsing a block mapping
  in "<unicode string>", line 26, column 4:
       default: csv
       ^ (line: 26)
expected <block end>, but found '<block mapping start>'
  in "<unicode string>", line 35, column 5:
        vars_map:
        ^ (line: 35)

(То, что первая строка здесь обозначена как 26, является типичным началом отсчета нуля против начала отсчета при 1 разнице).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...