01,TEST_1,,10.56.7.80
02,TEST_2,bla,10.57.80.9
03,TEST_3,,10.60.251.9
####
TEST_1,10.56.7.80
TEST_6,10.66.251.9
TEST_5,10.66.81.9
##
##
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use XML::Twig;
use autodie;
use Data::Dumper;
my @filename = ('output1.csv', 'output2.csv');
my %file1 = () ;
open my $fh, '<', $filename[0]; # using autodie
while (<$fh>){
chomp;
my ($name,$ip) = split /\s*,\s*/;
$file1{$name} = $ip;
}
close $fh;
my %file2 = () ;
my %ip2name = ();
open $fh, '<', $filename[1]; # using autodie
while (<$fh>){
chomp;
my ($id,$name,$description,$ip) = split /\s*,\s*/;
$file2{$name} = [$id,$ip];
# $ip2name{$ip} = [$id,$name];
}
close $fh;
# determine updates and additions requires
my @delete =();
foreach my $name (sort keys %file2) {
my $ip1 = $file2{$name};
if ( not exists $file1{$name} ){
# check if ip exists
if ( $description=null ){
my $id = $ip2name{$ip1};
print "DELETE name : '$name'\n";
push @delete,[$id,$name,$description,$ip]
}
}
}
my $ua = LWP::UserAgent->new(
ssl_opts=> {
# SSL_verify_mode => SSL_VERIFY_NONE,
verify_hostname => 0,}
);
for (@delete){
my ($id,$name,$description,$ip1) = @$_;
my $uri="https://hostname:9060/ers/config/networkdevice/$id";
my $req = HTTP::Request->new('DELETE', $uri,
[Accept=>'application/vnd.com.cisco.ise.network.networkdevice.1.1+xml',
Content_Type=>'application/vnd.com.cisco.ise.network.networkdevice.1.1+xml; charset=utf-8']);
$req->authorization_basic("user", "user");
print $req->as_string; # testing
my $res = $ua->request($req);
if ($res->is_success) {
print $res->status_line, "\n";
} else {
print $res->status_line, "\n";
}
}
}
##
##
foreach my $name (sort keys %file2) {
my $ip1 = $file2{$name};
if ( not exists $file1{$name} ){
# check if ip exists
if ($description=null){
my $id = $ip2name{$ip1};
print "DELETE name : '$name'\n";
push @delete,[$id,$name,$description,$ip]
}
}