Skip to content
Phil Shafer edited this page Jun 14, 2013 · 11 revisions

JUISE, the JUNOS User Interface Scripting Environment

Welcome to JUISE!

JUISE is the JUNOS User Interface Scripting Environment, a set of tools that allow development and testing of SLAX scripts targeting the JUNOS software from Juniper Networks. Users can develop scripts in their desktop environment, performing the code/test/debug cycle in a more natural way. Tools for developers are available, including a debugger, a profiler, a call-flow tracing mechanism, and trace files.

The project builds on libslax, the open-source implementation of the SLAX language, which is used internal in JUNOS. SLAX is a syntactic variant of XSLT, the W3C language for XML-to-XML transformations. XSLT scripts read XML input data and produce XML output. Given the abilities of JUNOS for producing and consuming XML data, this was the obvious choice for an on-box scripting langauge. XSLT is small and simple, with a declarative style that matches the needs of script writers. SLAX addresses readability concerns with XSLT, casting the same constructs in a grammar that resembles C and Perl. See the libslax project page for more information.

JUISE includes the set of extension functions that are JUNOS specific, including the functions to open NETCONF connections and invoke NETCONF RPCs. The "juise" tool allows for remote development and testing of SLAX scripts for JUNOS, including "commit" scripts (which are invoked during the "commit" operation) and "op" scripts (which are scripts invoked from the JUNOS CLI.

In addition, JUISE serves as a vehicle for other related projects revolving around script development. These projects are still under development.

If we knew what it was we were doing, it would not be called
research, would it?
    -- Albert Einstein

Building juise

To build juise from the git repo:

git clone https://github.com/Juniper/juise.git
cd juise
sh ./bin/setup.sh
cd build
../configure
make
make test
make install

We use "build" to keep object files and generated files away from the source tree.

Clone this wiki locally