Junoser

Test on Ubuntu Code Climate Inline docs

Junoser is a JUNOS configuration PEG parser which can be automatically generated from Juniper's netconf.xsd. (XML Schema Definition for NETCONF)

Features

  • Configuration Validation

    • Structured "show configuration" format
    • One-liner "| display set" format
  • Configuration Translation

    • Inter-translation between structured form and display-set form

NOTE

Inter-translation from display-set form into structured form is experimental feature in this release.

Getting Started

$ gem install junoser

Usage

Syntax validation

$ junoser -c config.txt

# or

$ cat config.txt | junoser -c

Syntax translation

Structured form into "display set"
$ junoser -d config.txt
set protocols bgp group ebgp-peers neighbor 192.0.2.2

# or

$ cat config.txt | junoser -d
set protocols bgp group ebgp-peers neighbor 192.0.2.2
"display set" into structured form
$ junoser -s config.txt

# or

$ cat config.txt | junoser -s

Updating parser for new directives

From Juniper website, you can download the XSD schema for the version of JunOS you want to target:

  • Junos XML API
  • Select your version
  • Application Tools
  • XML Schema for Configurator Data

Alternatively, you can retrieve the schema with Netconf:

$ ssh -Csp 830 JUNOS netconf < example/get-schema.xml | sed -n '/^<xsd:schema/,/^<\/xsd:schema/p' > junos-XXX.xsd

Put it in tmp/, update xsd_path in Rakefile and run:

$ bundle exec rake build:config build:rule

Alternatively, you may look in example/ for some prebuilt rules file. If you want to use them, copy one to tmp/rules.rb and run:

$ bundle exec rake build:rule

Contributing

Please report issues or enhancement requests to GitHub issues. For questions or feedbacks write to my twitter @codeout.

Or send a pull request to fix.

Copyright (c) 2015-2022 Shintaro Kojima. Code released under the MIT license.