1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| #!/usr/bin/perl
#==================================================
# Script argument waited:
# 1st argument: IP of NNM Server
# 2nd argument: Site name (ex C2x or C4)
#==================================================
use strict;
use Carp;
use warnings;
use XML::Twig; # Parse xml file
use List::Compare; # Compare arrays
my $command;
my $nnm_ip = $ARGV[0];
my $site = $ARGV[1];
my $nnm_import_log = '/tmp/NNMImport.log';
my $nnm_xml_file = '/tmp/dump/nnm_hostname.xml';
my $nnm_temp_file = '/tmp/dump/nnm_hostname.temp';
# get hostname of nnm temp
my @hostname_yesterday_nnm;
if ( -e $nnm_temp_file ) {
open my $fh_nnm_temp, '<', $nnm_temp_file or die "Unable to read $nnm_temp_file";
@hostname_yesterday_nnm = <$fh_nnm_temp>;
close $fh_nnm_temp or die "Unable to close in $nnm_temp_file";
}
else {
warn "$nnm_temp_file does not exists\n";
}
# Get NNM NODE file
my $commande
= "opcdeploy -cmd \"D:/HP/NNM/nonOV/perl/a/bin/perl D:/HP/NNM/bin/nnmtopodump.ovpl -type node\" -node $nnm_ip > $nnm_xml_file";
print "[$commande]\n";
system($commande) == 0 or die("Erreur commande : $commande");
# Get hosname from NNM NODE file : topo/node/name node
my @hostname_today_nnm;
my $twig = new XML::Twig( Twig_handlers => { 'topo/node/name' => \&get_name, }, );
$twig->parsefile($nnm_xml_file);
$twig->purge;
# Compare nnm hostname yesterday and today
my $lc = List::Compare->new( \@hostname_yesterday_nnm, \@hostname_today_nnm );
my @hostname_lost = $lc->get_complement;
my @hostname_tosave = $lc->union;
print scalar @hostname_lost, " hostname lost from NNM\n";
foreach my $host (@hostname_lost) {
print "\t- $host to delete from OML\n";
my $delnode_command = "opcnode -del_node node_name=$host net_type=NETWORK_IP";
print "\t- [$delnode_command]\n";
system($delnode_command) == 0 or die("Erreur commande : $delnode_command");
}
# Save hostname nnm
print "Save $nnm_temp_file\n";
open my $fh_save, '>', $nnm_temp_file or die "Unable to create $nnm_temp_file";
foreach my $host (@hostname_tosave) {
print {$fh_save} "$host\n";
}
close $fh_save or die "Unable to close in $nnm_temp_file";
# Get OML NODES
$commande = "opcnode -list_nodes | grep Name | awk '{print\$3}'";
print "[$commande]\n";
my @oml_hostnames = `$commande`;
# ......
sub get_name {
my ( $twig, $twig_name ) = @_;
push @hostname_today_nnm, $twig_name->text;
} |