- Perl 5.30.1
XML::Simple
で 読み込んだら普通に hash, array の操作でOK
XML::Simple
で 読み込んだら普通に hash, array の操作でOK
#!/usr/bin/env perl | |
use 5.30.1; | |
use strict; | |
use warnings; | |
use utf8; | |
use Data::Dumper 'Dumper'; | |
use XML::Simple; | |
$XML::Simple::PREFERRED_PARSER='XML::Parser'; # default: SAX | |
if ($0 eq __FILE__) { | |
my $pa_conf = __PACKAGE__->read_paloalto_xml($ARGV[0]); | |
say Dumper($pa_conf); | |
} | |
sub read_paloalto_xml { | |
my $class = shift; | |
my $file = shift; | |
#--- XML::Simple で 読み込み | |
my $xml = XML::Simple->new()->XMLin($file); | |
#--- 必要な要素を適当に取得して返却 | |
my $system = $xml->{'devices'}->{'entry'}->{'deviceconfig'}->{'system'}; | |
my $vsys_entry = $xml->{'devices'}->{'entry'}->{'vsys'}->{'entry'}; | |
my $return = { | |
'version' => $xml->{'version'} | |
,'hostname' => $system->{'hostname'} | |
,'ip' => $system->{'ip-address'} | |
,'address' => $vsys_entry->{'address'}->{'entry'} | |
,'address-group' => $vsys_entry->{'address-group'}->{'entry'} | |
,'service' => $vsys_entry->{'service'}->{'entry'} | |
,'policy' => $vsys_entry->{'rulebase'}->{'security'}->{'rules'}->{'entry'} | |
,'zone' => $vsys_entry->{'zone'}->{'entry'} | |
}; | |
return $return; | |
} | |
1; |