Cisco Prime Infrastructure API
Prime Infrastructure API Documentation

# Scripting (Perl)

It is quite easy to use the NBI from Perl. There are many option and libraries that can used. For this example, I used the 'normal' HTTPS support with LWP::UserAgent and the JSON module.

This sample will print out a basic inventory of the AccessPoints the are known to Prime Infrastructure. If a large number of AccessPoints are present it could easily be changed to use paging.

To run the script below, you will need to install JSON and LWP::Protocol::https from CPAN.

    #!/opt/local/bin/perl -w
    use strict;
    use JSON -support_by_pp;
    use LWP 5.64;
    use LWP::UserAgent;

    $ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
    my $ua = LWP::UserAgent->new;

    my $BASE_URL = 'https://172.18.138.90/webacs/api/v1/';
    my $UN="root";
    my $PW="Public123";

    sub fetch ($){
    	my ($url) = @_;
    	my $req = HTTP::Request->new(GET => $BASE_URL.$url);
    	$req->authorization_basic($UN,$PW);
        return $ua->request($req)->content or die ("Cannot read from ".$BASE_URL.$url);
    }

    	my $content = fetch('data/AccessPoints.json?.full=true');

         my $json = new JSON;

        # these are some nice json options to relax restrictions a bit:
        my $json_text = $json->allow_nonref->utf8->relaxed->escape_slash->loose->allow_singlequote->allow_barekey->decode($content);

    	foreach my $ap (@{$json_text->{queryResponse}->{'entity'}}){
    		print "------------------------\nAccess Point ".$ap->{'accessPointsDTO'}->{'@id'}."\n";
    		print "Model:".$ap->{'accessPointsDTO'}->{'model'}."\n";
    		print "MAC Address:".$ap->{'accessPointsDTO'}->{'macAddress'}."\n";
    		print "Serial Number:".$ap->{'accessPointsDTO'}->{'serialNumber'}."\n";
    		print "Software Version:".$ap->{'accessPointsDTO'}->{'softwareVersion'}."\n";
    		print "Status:".$ap->{'accessPointsDTO'}->{'status'}."\n";
    		print "Location:".$ap->{'accessPointsDTO'}->{'location'}."\n";
    	}

The result of running the program is:

        		    ------------------------
    				Access Point 13544533
    				Model:AIR-CAP3602I-A-K9
    				MAC Address:c4:0a:cb:88:34:10
    				Serial Number:FTX1552GKU8
    				Software Version:7.2.103.0
    				Status:MINOR
    				Location:default location
    				------------------------
    				Access Point 13544535
    				Model:AIR-CAP3602I-A-K9
    				MAC Address:c4:0a:cb:88:41:80
    				Serial Number:FTX1552GKUB
    				Software Version:7.2.103.0
    				Status:CLEARED
    				Location:default location

The returned JSON is as follows:

        		{"queryResponse":
        {"@type":"AccessPoints",
         "@rootUrl":"https://172.18.138.90/webacs/api/v1/data",
         "@requestUrl":"https://172.18.138.90/webacs/api/v1/data/AccessPoints?.full=true",
         "@responseType":"listEntityInstances",
         "entity":[
            {"@url":"https://172.18.138.90/webacs/api/v1/data/AccessPoints/13544533",
             "@type":"AccessPoints",
             "@dtoType":"accessPointsDTO",
             "accessPointsDTO":
                {"@id":"13544533",
                 "@displayName":"13544533",
                 "adminStatus":"ENABLE",
                 "bootVersion":"12.4.23.0",
                 "clientCount":0,
                 "clientCount_2_4GHz":0,
                 "clientCount_5GHz":0,
                 "controllerIpAddress":"192.168.100.25",
                 "controllerName":"TST-WLC3",
                 "countryCode":"US",
                 "ethernetMac":"c4:64:13:b4:20:4a",
                 "hreapEnabled":false,
                 "ipAddress":"192.168.90.87",
                 "location":"default location",
                 "lwappUpTime":10846300,
                 "macAddress":"c4:0a:cb:88:34:10",
                 "model":"AIR-CAP3602I-A-K9   ",
                 "name":"APc464.13b4.204a",
                 "serialNumber":"FTX1552GKU8",
                 "softwareVersion":"7.2.103.0",
                 "status":"MINOR",
                 "type":"AP3600I",
                 "upTime":50884700}},
            {"@url":"https://172.18.138.90/webacs/api/v1/data/AccessPoints/13544535",
             "@type":"AccessPoints",
             "@dtoType":"accessPointsDTO",
             "accessPointsDTO":
                {"@id":"13544535",
                 "@displayName":"13544535",
                 "adminStatus":"ENABLE",
                 "bootVersion":"12.4.23.0",
                 "clientCount":0,
                 "clientCount_2_4GHz":0,
                 "clientCount_5GHz":0,
                 "controllerIpAddress":"192.168.100.25",
                 "controllerName":"TST-WLC3",
                 "countryCode":"US",
                 "ethernetMac":"c4:64:13:b4:21:15",
                 "hreapEnabled":false,
                 "ipAddress":"192.168.90.89",
                 "location":"default location",
                 "lwappUpTime":10845000,
                 "macAddress":"c4:0a:cb:88:41:80",
                 "model":"AIR-CAP3602I-A-K9   ",
                 "name":"APc464.13b4.2115",
                 "serialNumber":"FTX1552GKUB",
                 "softwareVersion":"7.2.103.0",
                 "status":"CLEARED",
                 "type":"AP3600I",
                 "upTime":50676200}}]}}