Junos Automation (Scripting)
Highlighted
Junos Automation (Scripting)

Op script to display route information

[ Edited ]
05.16.18   |  
2 weeks ago

Hi all,

I have an op script that I modified from a found script and I'm having trouble getting it to work properly. I need to perform a 'show route detail <ip>' and the script seems to run, but it doesn't take into account the 'ip' variable and shows everything. Here is the 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";
 
/*
 * Shows the source router and AS path of an IP
 */
 
var $arguments = {
   <argument> {
      <name> "ip";
      <description> "IP address";
      }
   }
   param $ip;
   match / {
   <op-script-results> {
       var $rpc = {
          <get-route-information> {
          <detail>;
          }
       }
       var $out = jcs:invoke($rpc);
       <rt junos:style="detail"> {
             <output> 'Prefix                         Source Router                         AS Path';
                 for-each ($out/route-table/rt) {
             <output> jcs:printf('%-25s %-25s %-s', rt-destination _ "/" _ rt-prefix-length, rt-entry/protocol-nh/to, rt-entry/as-path);
             }
          }
       }
    }

The output formatting probably needs to be tweaked a bit, which I can do, but the command that is run is 'show route detail' with no IP qualifier. I don't mind at all trying to figure out the right syntax, but I am not sure where to look in the documentation. Or maybe I am doing this all wrong. Please let me know!

 

 

EDIT: So I was kind of able to get just my requested line of output by changing the 'foreach' statement:

 

for-each ($out/route-table/rt[rt-destination = $ip]) 

I have two issues now - first is that the match has to be exact or the output shows nothing. The second is that I still don't think something is right, as this script running on a router with lots of routes doesn't complete. It works on my lab router fine, so I am clearly not structuring the command correctly or something.

2 REPLIES
Junos Automation (Scripting)
Solution
Accepted by topic author evt
2 weeks ago

Re: Op script to display route information

05.16.18   |  
2 weeks ago

Hi

 

I thing the RPC that you are issuing should look like

       var $rpc = {
          <get-route-information> {
          <destination> $ip;
          <detail>;
          }

Please check.

Best Regards,
PK

Juniper Ambassador, Juniper Networks Certified Instructor,
JNCIE-SEC #98, JNCIE-ENT #393, JNCIE-SP #2253
Twitter: @JuniperTrain
GitHub: https://github.com/pklimai
[Juniper Authorized Education & Support in Russia]
Junos Automation (Scripting)

Re: Op script to display route information

05.16.18   |  
2 weeks ago

Thanks, that did it!