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.