[j-nsp] Need help with event script

Curtis Call ccall at juniper.net
Fri Oct 23 11:46:34 EDT 2009


This is PR 436135, fixed in 9.5R2 and above.  Basically, if you are running on an unfixed version, and your event scripts are enabled via "event-options event-script" then there is a chance that your arguments will have a space appended to them.

You'll want to include workaround code like this:

var $fixed-argument = {
    var $length = string-length( $argument );
    if( substring( $argument, $length ) == " " ) {
        expr substring( $argument, 1, $length - 1 );
    }
    else {
        expr $argument;
    }
}

> -----Original Message-----
> From: juniper-nsp-bounces at puck.nether.net [mailto:juniper-nsp-
> bounces at puck.nether.net] On Behalf Of Alexander Shikoff
> Sent: Friday, October 23, 2009 7:28 AM
> To: juniper-nsp at puck.nether.net
> Subject: [j-nsp] Need help with event script
> 
> Hello!
> 
> I'm trying to make changes of run-time configuration based on time of
> day.
> I want simple event script to change policer on interface at given
> time.
> Script is quite simple (see below).
> event-options are configured as follows:
> 
> [edit event-options]
> minotaur at br1-gdr.ki# show
> generate-event {
>     Start-Business-Time time-of-day "17:07:00 +0300";
> }
> policy Modify-Speeds-to-World {
>     events Start-Business-Time;
>     then {
>         event-script change-policer.slax {
>             arguments {
>                 interface ge-0/0/0;
>                 unit 400;
>                 policer-in pol-50Mbit;
>                 policer-out pol-50Mbit;
>             }
>         }
>     }
> }
> event-script {
>     file change-policer.slax;
> }
> traceoptions {
>     file events.log;
>     flag events;
>     flag server;
>     flag policy;
> }
> 
> 
> 
> 
> The problem is that script does not make any changes in configuration
> and fails to work:
> [edit event-options]
> minotaur at br1-gdr.ki# run show log escript.log
> [...]
> Oct 23 17:07:05 results of event script
> Oct 23 17:07:05 begin dump
> <output>Changing policers on interface ge-0/0/0 .400 </output>Oct 23
> 17:07:05 end dump
> Oct 23 17:07:05 results of event script
> Oct 23 17:07:05 begin dump
> <output>
> 
> 
> invalid trailing input ' ' for 'ge-0/0/0 '
> 
> 
> 
> interface
> statement creation failed
> 
> 1
> </output>Oct 23 17:07:05 end dump
> Oct 23 17:07:05 finished event script 'change-policer.slax'
> Oct 23 17:07:05 event script processing ends
> Oct 23 17:07:07 escriptdefinition script processing begins
> Oct 23 17:07:07 escriptdefinition script processing ends
> [...]
> 
> I'm wondering where does trailing whitespace appear from? And is that
> the main
> reason of execution fault?
> 
> Any suggestions? Thanks a lot.
> 
> 
> 
> 
>  My script:
> 
> 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";
> 
> param $interface;
> param $unit;
> param $policer-in;
> param $policer-out;
> 
> match / {
>  <event-script-results> {
>   <output> 'Changing policers on interface ' _ $interface _ '.' _
> $unit;
> 
>   var $newcfg = {
>         <configuration> {
>          <interfaces> {
>           <interface> {
>            <name> $interface;
>            <unit> {
>             <name> $unit;
>             <family> {
>              <inet> {
>               <policer> {
>                <input> $policer-in;
>                <output> $policer-out;
>               }
>              }
>             }
>            }
>           }
>          }
>         }
>   } /* $newcfg */
> 
>   var $rpc = jcs:open();
>   var $results := { call jcs:load-configuration($connection=$rpc,
> $configuration=$newcfg); }
> 
>   <output> $results;
> 
>   expr jcs:close( $rpc );
>  }
> }
> 
> --
> MINO-RIPE
> _______________________________________________
> juniper-nsp mailing list juniper-nsp at puck.nether.net
> https://puck.nether.net/mailman/listinfo/juniper-nsp


More information about the juniper-nsp mailing list