Script for netscreen vpn interfaces with ifSpeed

Templates, scripts for templates, scripts and requests for templates.

Moderators: Developers, Moderators

Post Reply
User avatar
nebj00la
Cacti User
Posts: 112
Joined: Fri Feb 17, 2006 9:02 pm
Location: Massachusetts, USA
Contact:

Script for netscreen vpn interfaces with ifSpeed

Post by nebj00la »

So, I'm trying to write a script that returns the following data to Cacti:

nsVpnMonIndex
1.3.6.1.4.1.3224.4.1.1.1.1.$

nsVpnMonVpnName
.1.3.6.1.4.1.3224.4.1.1.1.4.${nsVpnMonIndex}|sed 's/[^[:alnum:]_-]//g'`

nsVpnMonIfIndex
.1.3.6.1.4.1.3224.4.1.1.1.39.${nsVpnMonIndex}

nsifSpeed
.1.3.6.1.2.1.2.2.1.5.${nsVpnMonIfIndex}

The logic is based on an existing script that was used with MRTG. I'm having trouble making sense of how to iterate multiple table requests and parse the output.

There is an existing script on the forums that gets the listed information, but it's missing the ifSpeed value, which is rather funky to get (you have to make a relationship between 1.3.6.1.4.1.3224.4.1.1.1.39 and 1.3.6.1.2.1.2.2.1.5.

If any of this doesn't make sense, it's probably because my brain hurts right now from trying to figure it out :-P

Assistance is greatly appreciated.
Thanks,
nebj00la
User avatar
nebj00la
Cacti User
Posts: 112
Joined: Fri Feb 17, 2006 9:02 pm
Location: Massachusetts, USA
Contact:

Re: Script for netscreen vpn interfaces with ifSpeed

Post by nebj00la »

nebj00la wrote:If any of this doesn't make sense, it's probably because my brain hurts right now from trying to figure it out :-P

Assistance is greatly appreciated.
So I've got the following put together, and need some assistance getting the Data Query working properly:

Attached is the bash script that gathers the appropriate data from the Juniper device, and what I thought would work as an XML Data Query. Unfortunately, nothing useful is being output from the data query, whether I use input/output fields.
Attachments
netscreen.subinterfaces.xml
Netscreen Subinterfaces XML Query - Beginnings
(1.31 KiB) Downloaded 260 times
netscreen.subinterfaces.sh
Netscreen Subinterfaces Bash Script - (Usage <script.sh> <hostname> <community>
(867 Bytes) Downloaded 230 times
Thanks,
nebj00la
User avatar
nebj00la
Cacti User
Posts: 112
Joined: Fri Feb 17, 2006 9:02 pm
Location: Massachusetts, USA
Contact:

Post by nebj00la »

Here's the output of the bash script:

Code: Select all

[jtomawski@host]/scripts% ./netscreen_tunnel_interfaces.sh testhost notshowing
vpn1:0:125000000:0:0
vpn2:1:125000000:1447840704:1634286657
vpn3:2:125000000:2399037376:3980692710
vpn4:3:125000000:1790073088:3591907615
vpn5:4:125000000:1150631920:3389572220
vpn6:5:125000000:0:0
[jtomawski@host]/scripts%
Thanks,
nebj00la
User avatar
Howie
Cacti Guru User
Posts: 5508
Joined: Thu Sep 16, 2004 5:53 am
Location: United Kingdom
Contact:

Post by Howie »

I think you need an indexed query instead - the aim is to get one graph per vpn right? so the index is some identifier for each vpn (either the interface number if they are all tunnel interfaces, or the endpoint IP or something)...

For Cacti to do that, you need to write a script that understands a couple of arguments - index, num_indexes, get and query. It then presents either a list of the indexes, or the data for one of the VPNs. Then you make an XML file in resources/script_queries/ for it.

I don't know where I found example code for this, but here's one of mine:

Code: Select all

#!/usr/bin/perl

$statsfile = "/var/tmp/cacti-adsl-bgp-counts.txt";

$max_age = 500;
$nhosts = 0;

if ( open( STATS, $statsfile ) ) {
    while (<STATS>) {
        chomp;
        chomp;

        # m/^(\S+)\s*[=:]\s*(\S+)/m ;
        ( $key, $meta, $value ) = ( m/^\s*(\S+)\s*([=:])\s*(\S+)/ );

        if($meta eq ':') { $metadata{$key} = $value; }
        if($meta eq '=') { $data{$key} = $value; $nhosts++; }
    }

    close(STATS);
}

if ( $ARGV[0] eq 'index' ) {
    print join( "\n", sort keys %data );
    exit();
}

if ( $ARGV[0] eq "query" ) {
    push( @needed, sort keys %data );
}

if ( $ARGV[0] eq "get" ) {
    push( @needed, $ARGV[2] );
}

if($ARGV[0] eq 'num_indexes')
{
        print "$nhosts";
        exit();
}


foreach $index (@needed) {
    $value = 'U';

    if ( $ARGV[1] eq 'hostname' )   { $value = $index; }
    if ( $ARGV[1] eq 'count' ) { $value = $data{$index}; }

    if ( $ARGV[0] eq 'get' ) {
        print $value;
    }
    else {
        print $index. ":" . $value . "\n";
    }
}
obviously not for Netscreen VPNs, although I'd be interested to see that too :-)
Weathermap 0.98a is out! & QuickTree 1.0. Superlinks is over there now (and built-in to Cacti 1.x).
Some Other Cacti tweaks, including strip-graphs, icons and snmp/netflow stuff.
(Let me know if you have UK DevOps or Network Ops opportunities, too!)
User avatar
nebj00la
Cacti User
Posts: 112
Joined: Fri Feb 17, 2006 9:02 pm
Location: Massachusetts, USA
Contact:

Post by nebj00la »

Howie wrote:I think you need an indexed query instead - the aim is to get one graph per vpn right? so the index is some identifier for each vpn (either the interface number if they are all tunnel interfaces, or the endpoint IP or something)...

For Cacti to do that, you need to write a script that understands a couple of arguments - index, num_indexes, get and query. It then presents either a list of the indexes, or the data for one of the VPNs. Then you make an XML file in resources/script_queries/ for it.
Thanks for the reply, Howie. Yes, an indexed query is the target. One graph per vpn. The index would simply be the subinterface index value.

I understand what you're talking about, but I'll need examples and documentation on getting index, num_indexes, get and query to work in this situation. It's a bit over my head right now. I literally just started coding within the past few years, so I'm a typical code novice.
Thanks,
nebj00la
md88dg
Posts: 7
Joined: Tue Jan 04, 2011 1:35 am
Location: Germany

Re: Script for netscreen vpn interfaces with ifSpeed

Post by md88dg »

Hello,

i have make a template to graph vpn tunnel stats. this template was craeted with cacti version 0.8.7d

netscreen_vpn_tunnel_stats.zip
Files for snmp queries and graph / data template
(8.92 KiB) Downloaded 189 times
Attachments
tunnel_status.png
tunnel_status.png (29.81 KiB) Viewed 2188 times
Last edited by md88dg on Thu Jan 27, 2011 4:09 am, edited 1 time in total.
Cacti 0.8.7g
PIA 2.8
PHP 5.1.6
MySQL 5.0.82sp1
RRDTool 1.2.23
SNMP 5.1.2

400 Hosts
4000 RRDs
8000 Data Sources
johnnylately
Posts: 5
Joined: Mon Aug 11, 2008 9:22 am
Location: Maryville, TN, USA

Re: Script for netscreen vpn interfaces with ifSpeed

Post by johnnylately »

md88dg, I tried importing the 3 xml files but I get "Error: XML: Hash version does not exist.". Is this specific to a version of Cacti? I'm using 0.8.7b.

Edit: Nevermind, hash shows your template created on newer version. Time for me to upgrade.
Post Reply

Who is online

Users browsing this forum: No registered users and 3 guests