为什么在初始化氧化时出现错误?

时间:2019-04-23 22:00:24

标签: yaml

我是在Ubuntu 16.046 Server上使用Oxidized的新手。我正在尝试将Oxidized设置为我的Cisco交换机的配置管理。

配置:

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 :(得分:0)

您在做错的事情是使用不一致的缩进,这使得特别是作为使用YAML的新手很难检测出问题所在。

  • 您可以缩进键vars的值为四个的映射。
  • 您缩进的映射是键input的值为五个的值。
  • 您缩进了映射,该映射是具有两个位置的键output的值。
  • 您缩进的映射是键map的值为三个位置。

现在全部允许,但是使您的文件对人类的可读性降低。但是不允许的是,与source对应的值的映射部分具有三个位置(键defaultcsvmap ),并部分地具有四个位置(vars_mapremove_secret)。

请注意,这里的YAML解析器不会抛出错误(尽管应该),并且解析vars_mapremove_secret的缩进程度与{{1} }。

您将第27行作为错误指示是解析器无法正确解析到末尾,映射从该行开始(即以键值对password开头的映射。

default: csv程序可能更加用户友好,例如如果您使用我的Oxidized解析器(适用于Python),则会收到一条错误消息,该错误消息可以更准确,更有用的方式指出该错误,因此这不是YAML问题,但是Oxidized并不友好:

ruamel.yaml

(这里的第一行表示为26,这是典型的从零开始计数与以1的差开始计数)。