Understanding the NETCONF Perl Client and Sample Scripts
Devices running Junos OS support the NETCONF XML management protocol, which enables client applications to request and change configuration information on the devices. The NETCONF protocol uses an Extensible Markup Language (XML)-based data encoding for the configuration data and remote procedure calls. The Juniper Networks NETCONF Perl API enables programmers familiar with the Perl programming language to create their own Perl applications to manage devices running Junos OS over NETCONF.
Prior to Junos OS Release 16.1, every Junos OS release included a new, release-dependent version of the NETCONF Perl client. Beginning in Junos OS Release 16.1, the NETCONF Perl client is release-independent, is hosted on GitHub and CPAN, and can manage devices running any version of the Junos OS release. The modules and sample scripts in the release-dependent versions of the NETCONF Perl distribution differ from those in the release-independent version hosted on GitHub and CPAN.
This section includes the following topics:
NETCONF Perl Client Modules
Table 1 summarizes
the modules in the release-independent version of the NETCONF Perl
provides an object-oriented interface for communicating with the NETCONF
server on devices running Junos OS, and enables you to easily connect
to the device, establish a NETCONF session, and execute operational
and configuration requests. Client applications only directly invoke
Net::Netconf::Manager object. When
the client application creates a
Manager object, it supplies the device name and the login name to use when
accessing the device. The login name determines the client application's
access level on the device.
Table 1: NETCONF Perl Modules
Declares all NETCONF constants.
Implements an object-oriented interface to the NETCONF API supported by devices running Junos OS. Objects of this class represent the local side of the connection to the device, which communicates to the client using the NETCONF protocol.
Facilitates the development of XML documents for both operational and configuration requests.
The module uses
Instantiates and returns a NETCONF or Junos XML
SAX-based parser that parses responses from the NETCONF server.
Provides SSH access to a
Provides tracing levels and enables tracing based on the requested debug level.
The following module is new in the release-independent version
of the NETCONF Perl client:
The following modules were removed in the release-independent
version of the NETCONF Perl client:
Client applications can also leverage Perl modules in the public domain to ease the development of NETCONF Perl client applications. Because NETCONF uses XML-based data encoding, client applications can make use of the many Perl modules that manipulate XML data.
You can use the NETCONF Perl client to create Perl applications that connect to a device, establish a NETCONF session, and execute operations. The communication between the client and the NETCONF server on the device through the NETCONF Perl API involves the following steps:
Establishing a NETCONF session over SSHv2 between the client application and the NETCONF server on the device running Junos OS.
Creating RPCs corresponding to requests and sending these requests to the NETCONF server.
Receiving and processing the RPC replies from the NETCONF server.
The NETCONF Perl distribution includes an
examples directory with the following sample scripts that illustrate how
to use the modules to perform various functions. For instructions
on running the scripts, see the
README file in the NETCONF Perl GitHub repository at https://github.com/Juniper/netconf-perl.
diagnose_bgp/diagnose_bgp.pl—Illustrates how to monitor the status of the device and diagnose problems. The script extracts and displays information about a device's unestablished Border Gateway Protocol (BGP) peers from the full set of BGP configuration data.
get_chassis_inventory/get_chassis_inventory.pl—Illustrates how to use a predefined query to request information from a device. The sample script invokes the
get_chassis_inventoryquery with the
detailoption to request the same information as returned by the Junos XML
<get-chassis-inventory><detail/></get-chassis-inventory>request and the CLI operational mode command show chassis hardware detail.
edit_configuration/edit_configuration.pl—Illustrates how to configure the device by loading a file that contains configuration data formatted with Junos XML tag elements. The distribution includes a sample configuration file,
config.xml; however, you can specify a different configuration file on the command line when you invoke the script.