#!/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;