netskope/ntskp-api-05.pl

60 lines
1.9 KiB
Perl
Executable File

#!/usr/bin/perl -w
use strict;
use warnings;
use autodie;
use POSIX qw(strftime);
use Config::Tiny;
use HTTP::Tiny;
use JSON::PP;
my $CONFIG_FILE = "/home/mischa/netskope/netskope.cnf";
my $config = Config::Tiny->read($CONFIG_FILE, 'utf8');
my $NTSKP_TENANT = $config->{netskope}{NTSKP_TENANT};
my $NTSKP_TOKEN = $config->{netskope}{NTSKP_TOKEN};
my $NTSKP_PERIOD = $config->{netskope}{NTSKP_PERIOD};
my $NTSKP_SCORE = $config->{netskope}{NTSKP_SCORE};
my $NTSKP_CATEGORIES = $config->{netskope}{NTSKP_CATEGORIES};
my $from_email = 'mischa@netskope.com';
my $to_email = 'mischa@netskope.com';
my $subject = "AZ Blocklist Report";
#print "Tenant: $NTSKP_TENANT\n";
my $uri = "$NTSKP_TENANT/api/v1/reports?token=$NTSKP_TOKEN&op=reportInfo&id=498";
my $response = HTTP::Tiny->new->get($uri);
#print "HTTP: $response->{status} $response->{reason}\n";
my $json = JSON::PP->new->utf8->decode($response->{content});
#print "API: $json->{'status'}\n";
my $data = $json->{'data'}->{'latestScheduledRunInfo'}->{'widgets'};
my $length = (@{$data});
if ($length == 0) {
print "No widgets found\n";
last;
}
open my $fh_email, "|-", "/usr/sbin/sendmail -t";
printf $fh_email "To: %s\n", $to_email;
printf $fh_email "From: %s\n", $from_email;
printf $fh_email "Subject: %s\n\n", $subject;
for (my $i = 0; $i < $length; $i++) {
print "$data->[$i]->{'id'} - $data->[$i]->{'name'}\n";
print $fh_email "$data->[$i]->{'id'} - $data->[$i]->{'name'}\n";
$uri = "$NTSKP_TENANT/api/v1/reports?token=$NTSKP_TOKEN&op=widgetData&id=$data->[$i]->{'id'}";
$response = HTTP::Tiny->new->get($uri);
#print "HTTP: $response->{status} $response->{reason}\n";
my $count = 0;
foreach (split(/\r\n/, $response->{content})) {
last if ($count == 30);
my @fields = split(/,/);
next if ($fields[1] =~ '"');
print "$fields[1],";
print $fh_email "$fields[1],";
$count++;
}
print "\n";
print $fh_email "\n";
}
close $fh_email;