Основы автоматизации на SLAX

Материал из Juniper Exam Wiki
Перейти к навигации Перейти к поиску

Fundamentals

- SLAX is based on XPath 1.0 and XSLT 1.0.

- Переменные задаются только 1 раз и дальше уже нет возможности их изменить.

- The “Node-Set” variable data-type is from XPath. Используется оператор :=.

var $my-ns-var := { 
   <interface> {
      <name> "ge-0/0/0"; }
   <interface> {
      <name> "ge-0/0/1";

- The “Result Tree Fragment” (RTF) может хранить в себе как строку, так и блок XML данных. Используется оператор =.

var $my-ns-var = { 
   <interface> {
      <name> "ge-0/0/0"; }
   <interface> {
      <name> "ge-0/0/1";

- Шаблон по умолчанию вернет RTF, но с помощью использования := можео заставить его вернуть node-set.

- Context Processing. Насколько я поняла, можно использовать (.) как current context. Пример:

var $my-ns-var := {
   <interface> {
      <name> "ge-0/0/0";
   <interface> {
      <name> "ge-0/0/1";
for-each( $my-ns-var/interface ) {
   var $ifd = .; /*                             $ifd is being assigned the 'current' interface node */
   <output> $ifd/name;

SLAX Script File Structure

Comments: - можно располагать хоть где в коде.

  • (/*) - open-comment
  • (*/) - close-comment
  • At the top: В скриптах в начале обязательно добавляется:
version 1.0;
ns junos = "http://xml.juniper.net/junos/*/junos";
ns xnm = "http://xml.juniper.net/xnm/1.1/xnm";
ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0";
Import "../import/junos.xsl";

после junos.xsl можно добавить любые свои файлы, написанные на SLAX, XSLT или их комбинации.

  • param - не изменяемые, нужно таким образом задать параметры командной строки.
param $interface;  
param $mtu-size = 2000;

можно задать переменную, например mtu-size, и если юзер не будет указывать напрямую значение нужного параметра, то будет использоваться то значение, которое указано через param.

  • $arguments - глобальная переменная, обеспечивает полезную информацию из CLI.
  • $event-definition - глобальная переменная для описания события.
  • main template - концептуальное начало скрипта. Шаблон, который матчит первый элемент из input XML document (source tree), даже если он пустой.

Для op script - выглядит так:

match / { 
   <op-script-results> {
      /* your code goes here */

Для event script - выглядит так:

match / { 
   <event-script-results> {
      /* your code goes here */

Для commit script - выглядит так:

match configuration {
      /* your code goes here */

Variables