Project

junoser

0.03
A long-lived project that still receives updates
PEG parser to vefiry and translate into different formats for JUNOS configuration.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 2.0
~> 13.0

Runtime

 Project Readme

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 and License

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