mirror of
https://github.com/pandorafms/pandorafms.git
synced 2025-07-30 01:05:39 +02:00
Merge branch '206-anadido-soporte-para-aix-en-plugin-de-inventario' into 'develop'
Resolve "Añadido soporte para AIX en plugin de inventario" See merge request artica/pandorafms!2294
This commit is contained in:
commit
547348440f
@ -20,7 +20,28 @@
|
|||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use constant TSTAMP_FILE => '/tmp/pandora_inventory.tstamp';
|
use constant TSTAMP_FILE => '/tmp/pandora_inventory.tstamp';
|
||||||
|
use Scalar::Util qw(looks_like_number);
|
||||||
|
use Data::Dumper;
|
||||||
|
|
||||||
|
# Set environment language to English
|
||||||
|
$ENV{"LANG"} = "en_US";
|
||||||
|
|
||||||
|
# Check AIX system
|
||||||
|
my $AIX=0;
|
||||||
|
my $system = `uname -a | awk '{print $1}'`;
|
||||||
|
if ($system =~ 'AIX') {
|
||||||
|
$AIX=1;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub is_enabled {
|
||||||
|
my $value = shift;
|
||||||
|
if ((defined ($value)) && looks_like_number($value) && ($value > 0)){
|
||||||
|
# return true
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
#return false
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
# Operation mode (LSHW or HWINFO)
|
# Operation mode (LSHW or HWINFO)
|
||||||
my $Mode;
|
my $Mode;
|
||||||
|
|
||||||
@ -31,7 +52,7 @@ my $Separator;
|
|||||||
sub get_module_data ($$$$) {
|
sub get_module_data ($$$$) {
|
||||||
my ($name, $hwinfo, $keys, $modules) = @_;
|
my ($name, $hwinfo, $keys, $modules) = @_;
|
||||||
my %module;
|
my %module;
|
||||||
|
$Separator='\s+\*\-';
|
||||||
# Store keys
|
# Store keys
|
||||||
foreach my $key (@{$keys}) {
|
foreach my $key (@{$keys}) {
|
||||||
push (@{$module{'_keys'}}, $key);
|
push (@{$module{'_keys'}}, $key);
|
||||||
@ -58,12 +79,65 @@ sub get_module_data ($$$$) {
|
|||||||
|
|
||||||
push (@{$modules->{$name}}, \%module);
|
push (@{$modules->{$name}}, \%module);
|
||||||
}
|
}
|
||||||
|
sub test_contain ($$) {
|
||||||
|
my ($value, $array)=@_;
|
||||||
|
if ( grep( /$value/, @{$array} ) ) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sub get_module_data_aix_ram_cpu ($$$$) {
|
||||||
|
my ($name, $hwinfo, $keys, $modules) = @_;
|
||||||
|
my %module;
|
||||||
|
# Store keys
|
||||||
|
foreach my $key (@{$keys}) {
|
||||||
|
push (@{$module{'_keys'}}, $key);
|
||||||
|
}
|
||||||
|
# Parse module data
|
||||||
|
foreach my $line (@{$hwinfo}) {
|
||||||
|
foreach my $key (@{$keys}) {
|
||||||
|
if ($line =~ /$key:\s+(.+)/) {
|
||||||
|
$module{$key} = $1;
|
||||||
|
$module{$key} =~ s/,/ /g;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# No data found
|
||||||
|
#my @data = keys (%module);
|
||||||
|
#return unless ($#data >= 0);
|
||||||
|
|
||||||
|
push (@{$modules->{$name}}, \%module);
|
||||||
|
}
|
||||||
|
sub get_module_data_aix ($$$$) {
|
||||||
|
my ($name,$hwinfo,$regex,$modules) = @_;
|
||||||
|
my %module;
|
||||||
|
foreach my $line (@{$hwinfo}) {
|
||||||
|
$line =~ s/\s{2,}/;/g;
|
||||||
|
$line =~ s/\+ //g;
|
||||||
|
$line =~ s/\* //g;
|
||||||
|
}
|
||||||
|
foreach my $line (@{$hwinfo}) {
|
||||||
|
if ($line =~ /$regex/){
|
||||||
|
my ($var1, $var2, $var3) = split /;/, $line;
|
||||||
|
my %module;
|
||||||
|
$module{'device'} = $var1;
|
||||||
|
$module{'serial'} = $var2;
|
||||||
|
$module{'description'}=$var3;
|
||||||
|
$module{'_keys'} = ['device','serial','description'];
|
||||||
|
push (@{$modules->{$name}}, \%module);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# Get a list of information file system in machine
|
# Get a list of information file system in machine
|
||||||
sub get_file_system($$) {
|
sub get_file_system($$) {
|
||||||
my ($name, $modules) = @_;
|
my ($name, $modules) = @_;
|
||||||
|
my @fileSystems;
|
||||||
my @fileSystems = `df -hP | tail -n +2`; #remove the titles of columns
|
if (is_enabled $AIX){
|
||||||
|
@fileSystems = `df -gP | tail -n +2`;
|
||||||
|
} else {
|
||||||
|
@fileSystems = `df -hP | tail -n +2`; #remove the titles of columns
|
||||||
|
}
|
||||||
|
|
||||||
foreach my $row (@fileSystems) {
|
foreach my $row (@fileSystems) {
|
||||||
next unless ($row =~ /^(\S+)\s+\S+\s+(\S+)\s+(\S+)\s+\S+\s+(\S+)/);
|
next unless ($row =~ /^(\S+)\s+\S+\s+(\S+)\s+(\S+)\s+\S+\s+(\S+)/);
|
||||||
@ -73,94 +147,110 @@ sub get_file_system($$) {
|
|||||||
$module{'used'} = $2;
|
$module{'used'} = $2;
|
||||||
$module{'avail'} = $3;
|
$module{'avail'} = $3;
|
||||||
$module{'mount'} = $4;
|
$module{'mount'} = $4;
|
||||||
$module{'_keys'} = ['filesystem', 'used','avail', 'mount'];
|
$module{'_keys'} = ['filesystem', 'used','avail', 'mount'];
|
||||||
push (@{$modules->{$name}}, \%module);
|
push (@{$modules->{$name}}, \%module);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Get a list of services init in machine
|
# Get a list of services init in machine
|
||||||
sub get_servicies_init_machine($$) {
|
sub get_servicies_init_machine($$) {
|
||||||
my ($name, $modules) = @_;
|
my ($name, $modules) = @_;
|
||||||
my $runlevel = `who -r | awk '{print \$2}'`;
|
my $runlevel;
|
||||||
|
if (is_enabled $AIX) {
|
||||||
|
$runlevel = `who -r | awk '{print \$3}'`;
|
||||||
|
} else {
|
||||||
|
$runlevel = `who -r | awk '{print \$2}'`;
|
||||||
|
}
|
||||||
|
|
||||||
#ini trim($runlevel)
|
#ini trim($runlevel)
|
||||||
$runlevel =~ s/^\s*//; #ltrim
|
$runlevel =~ s/^\s*//; #ltrim
|
||||||
$runlevel =~ s/\s*$//; #rtrim
|
$runlevel =~ s/\s*$//; #rtrim
|
||||||
#end trim($runlevel)
|
#end trim($runlevel)
|
||||||
|
|
||||||
my $script = "";
|
my $script;
|
||||||
|
|
||||||
if (-e "/etc/rc" . $runlevel .".d/") {
|
if (-e "/etc/rc" . $runlevel .".d/") {
|
||||||
$script = "ls /etc/rc" . $runlevel .".d/ -l | grep \"^l.*\" | awk \"{print \\\$NF}\" | sed -e \"s/\\.\\.\\///g\" | sed -e \"s/.*init\\.d\\///g\"";
|
$script = "ls -l /etc/rc" . $runlevel .".d/ | grep \"^l.*\" | awk \"{print \\\$NF}\" | sed -e \"s/\\.\\.\\///g\" | sed -e \"s/.*init\\.d\\///g\"";
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$script = "ls /etc/rc.d/rc" . $runlevel .".d/ -l | grep \"^l.*\" | grep \" S.* \" | awk \"{print \\\$NF}\" | sed -e \"s/\\.\\.\\///g\" | sed -e \"s/.*init\\.d\\///g\"";
|
$script = "ls -l /etc/rc.d/rc" . $runlevel .".d/ | grep \"^l.*\" | grep \" S.* \" | awk \"{print \\\$NF}\" | sed -e \"s/\\.\\.\\///g\" | sed -e \"s/.*init\\.d\\///g\"";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
my @services = `$script`;
|
my @services = `$script`;
|
||||||
foreach my $row (@services) {
|
foreach my $row (@services) {
|
||||||
|
|
||||||
my %module;
|
my %module;
|
||||||
$row =~ s/\n//;
|
$row =~ s/\n//;
|
||||||
$module{'service'} = $row;
|
$module{'service'} = $row;
|
||||||
$module{'_keys'} = ['service'];
|
$module{'_keys'} = ['service'];
|
||||||
push (@{$modules->{$name}}, \%module);
|
push (@{$modules->{$name}}, \%module);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Get a list of running processes
|
# Get a list of running processes
|
||||||
sub get_processes ($$) {
|
sub get_processes ($$) {
|
||||||
my ($name, $modules) = @_;
|
my ($name, $modules) = @_;
|
||||||
|
my $script;
|
||||||
|
if (is_enabled $AIX) {
|
||||||
|
$script = "ps -eo args | tail -n +2";
|
||||||
|
} else {
|
||||||
|
$script = "ps -eo command | tail -n +2";
|
||||||
|
}
|
||||||
|
|
||||||
my $script = "ps -eo command";
|
my @services = `$script`;
|
||||||
|
foreach my $row (@services) {
|
||||||
my @services = `$script`;
|
my %module;
|
||||||
foreach my $row (@services) {
|
# Remove carriage returns
|
||||||
my %module;
|
$row =~ s/[\n\l\f]//g;
|
||||||
# Remove carriage returns
|
# Replace semicolon by comma to avoid parse errors
|
||||||
$row =~ s/[\n\l\f]//g;
|
$row =~ s/;/,/g;
|
||||||
# Replace semicolon by comma to avoid parse errors
|
$module{'service'} = $row;
|
||||||
$row =~ s/;/,/g;
|
$module{'_keys'} = ['service'];
|
||||||
$module{'service'} = $row;
|
push (@{$modules->{$name}}, \%module);
|
||||||
$module{'_keys'} = ['service'];
|
}
|
||||||
push (@{$modules->{$name}}, \%module);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Get a list of valid users in the system
|
# Get a list of valid users in the system
|
||||||
sub get_users ($$) {
|
sub get_users ($$) {
|
||||||
my ($name, $modules) = @_;
|
my ($name, $modules) = @_;
|
||||||
|
my $script = "cat /etc/passwd";
|
||||||
my $script = "cat /etc/passwd";
|
|
||||||
my $user = "";
|
my $user = "";
|
||||||
my $estado = "";
|
my $estado = "";
|
||||||
|
|
||||||
my @services = `$script`;
|
my @services = `$script`;
|
||||||
foreach my $row (@services) {
|
foreach my $row (@services) {
|
||||||
my %module;
|
my %module;
|
||||||
|
|
||||||
next unless ($row =~ /^([A-Za-z0-9\-\_]*)/);
|
next unless ($row =~ /^([A-Za-z0-9\-\_]*)/);
|
||||||
|
if (is_enabled $AIX) {
|
||||||
$user = $1;
|
$user = $1;
|
||||||
$script = `passwd -S $user`;
|
$script = `lsuser $user`;
|
||||||
if ( $script =~ /^(\S+)\sP./){
|
if ( $script =~ /^(\S+)\sid./){
|
||||||
$module{'user'} = $user;
|
$module{'user'} = $user;
|
||||||
$module{'_keys'} = ['user'];
|
$module{'_keys'} = ['user'];
|
||||||
push (@{$modules->{$name}}, \%module);
|
push (@{$modules->{$name}}, \%module);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$user = $1;
|
||||||
|
$script = `passwd -S $user`;
|
||||||
|
if ( $script =~ /^(\S+)\sP./){
|
||||||
|
$module{'user'} = $user;
|
||||||
|
$module{'_keys'} = ['user'];
|
||||||
|
push (@{$modules->{$name}}, \%module);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Show Kernel Information
|
# Show Kernel Information
|
||||||
sub get_kernel_info ($$) {
|
sub get_kernel_info ($$) {
|
||||||
my ($name, $modules) = @_;
|
my ($name, $modules) = @_;
|
||||||
my $script = `uname -a | tr -d \";\"`;
|
my $script = `uname -a | tr -d \";\"`;
|
||||||
my %module;
|
my %module;
|
||||||
|
|
||||||
$module{'Kernel'} = $script;
|
$module{'Kernel'} = $script;
|
||||||
$module{'_keys'} = ['Kernel'];
|
$module{'_keys'} = ['Kernel'];
|
||||||
push (@{$modules->{$name}}, \%module);
|
push (@{$modules->{$name}}, \%module);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -171,11 +261,13 @@ sub get_software_module_data ($$) {
|
|||||||
# Guess the current distribution
|
# Guess the current distribution
|
||||||
my $distrib_id = "";
|
my $distrib_id = "";
|
||||||
|
|
||||||
if ( -e "/etc/SuSE-release"){
|
if (is_enabled $AIX) {
|
||||||
|
$distrib_id = "AIX";
|
||||||
|
}elsif ( -e "/etc/SuSE-release"){
|
||||||
$distrib_id = "SUSE";
|
$distrib_id = "SUSE";
|
||||||
} elsif ( -e "/etc/redhat-release"){
|
}elsif ( -e "/etc/redhat-release"){
|
||||||
$distrib_id = "REDHAT";
|
$distrib_id = "REDHAT";
|
||||||
} else {
|
}else {
|
||||||
$distrib_id = "DEBIAN";
|
$distrib_id = "DEBIAN";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -183,7 +275,9 @@ sub get_software_module_data ($$) {
|
|||||||
my @soft;
|
my @soft;
|
||||||
if ($distrib_id eq 'DEBIAN') {
|
if ($distrib_id eq 'DEBIAN') {
|
||||||
@soft = `dpkg -l | grep ii`;
|
@soft = `dpkg -l | grep ii`;
|
||||||
} else {
|
}elsif ($distrib_id eq 'AIX') {
|
||||||
|
@soft = `lslpp -Lcq | awk -F: '{print "ii "\$1" "\$3" "\$8}'`;
|
||||||
|
}else {
|
||||||
# Sometimes rpm return data splitted in two lines, and with dupes. Thats bad for our inventory system
|
# Sometimes rpm return data splitted in two lines, and with dupes. Thats bad for our inventory system
|
||||||
@soft = `rpm -q -a --qf "ii %{NAME} %{VERSION} %{SUMMARY}\n" | grep "^ii" | sort -u`;
|
@soft = `rpm -q -a --qf "ii %{NAME} %{VERSION} %{SUMMARY}\n" | grep "^ii" | sort -u`;
|
||||||
}
|
}
|
||||||
@ -211,67 +305,95 @@ sub get_software_module_data ($$) {
|
|||||||
#Get the list of interfaces with the ip assigned
|
#Get the list of interfaces with the ip assigned
|
||||||
sub get_ips ($$) {
|
sub get_ips ($$) {
|
||||||
my ($name, $modules) = @_;
|
my ($name, $modules) = @_;
|
||||||
|
my @interfaces;
|
||||||
|
my $ifconfig;
|
||||||
|
if (is_enabled $AIX) {
|
||||||
|
$ifconfig = `ifconfig -a`;
|
||||||
|
} else {
|
||||||
|
$ifconfig = `ifconfig`;
|
||||||
|
}
|
||||||
|
|
||||||
my $ifconfig = `ifconfig`;
|
|
||||||
|
|
||||||
my @ifconfig_array = split("\n", $ifconfig);
|
my @ifconfig_array = split("\n", $ifconfig);
|
||||||
|
|
||||||
for(my $i = 0; $i<$#ifconfig_array; $i++) {
|
foreach (@ifconfig_array){
|
||||||
|
if ($_=~/(.*)flags/){
|
||||||
#Check for an interface
|
my $match;
|
||||||
if ($ifconfig_array[$i] =~ /Link/) {
|
($match)=$_=~/^(.*?)\: flags/;
|
||||||
my %info;
|
$match=~s/://;
|
||||||
|
push @interfaces,$match;
|
||||||
my @line_split = split(" ", $ifconfig_array[$i]);
|
}
|
||||||
|
}
|
||||||
#Get interface name
|
foreach (@interfaces) {
|
||||||
$info{'interface'} = $line_split[0];
|
my $ifconfig_item=`ifconfig $_`;
|
||||||
|
my $interface=$_;
|
||||||
#Get IP address
|
my @ip_array = split("\n", $ifconfig_item);
|
||||||
my $line = $ifconfig_array[$i+1];
|
foreach (@ip_array) {
|
||||||
|
if ($_=~/(?<=inet )(.*)(?= netmask)/){
|
||||||
$line =~ s/\s+//g;
|
my $ip;
|
||||||
|
($ip)=$_=~/inet (.*) netmask/;
|
||||||
@line_split = split(":", $line);
|
my %info;
|
||||||
|
$info{'interface'} = $interface;
|
||||||
if($line_split[1] =~ /(\d+\.\d+\.\d+\.\d+).+/) {
|
$info{'ip'} = $ip;
|
||||||
$info{'ip'} = $1;
|
$info{'_keys'} = ['interface','ip'];
|
||||||
}
|
push (@{$modules->{$name}}, \%info);
|
||||||
|
}
|
||||||
$info{'_keys'} = ['interface', 'ip'];
|
}
|
||||||
push (@{$modules->{$name}}, \%info);
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#Get route table
|
#Get route table
|
||||||
sub get_route_table ($$) {
|
sub get_route_table ($$) {
|
||||||
my ($name, $modules) = @_;
|
my ($name, $modules) = @_;
|
||||||
|
my $route_table;
|
||||||
|
my @table_split;
|
||||||
|
if (is_enabled $AIX) {
|
||||||
|
$route_table = `netstat -rn`;
|
||||||
|
@table_split = split("\n", $route_table);
|
||||||
|
my $length=scalar @table_split;
|
||||||
|
for (my $i=4; $i<=$length-4; $i++) {
|
||||||
|
|
||||||
my $route_table = `route`;
|
my @split = split(" ", $table_split[$i]);
|
||||||
|
|
||||||
my @table_split = split("\n", $route_table);
|
my %info;
|
||||||
|
|
||||||
for (my $i=2; $i<=$#table_split; $i++) {
|
$info{'destination'} = $split[0];
|
||||||
|
$info{'gateway'} = $split[1];
|
||||||
|
$info{'mask'} = $split[2];
|
||||||
|
$info{'flags'} = $split[3];
|
||||||
|
$info{'metric'} = $split[4];
|
||||||
|
$info{'ref'} = $split[5];
|
||||||
|
$info{'use'} = $split[6];
|
||||||
|
$info{'interface'} = $split[7];
|
||||||
|
|
||||||
my @split = split(" ", $table_split[$i]);
|
$info{'_keys'} = ['destination', 'gateway', 'mask', 'flags', 'metric', 'use', 'interface'];
|
||||||
|
|
||||||
my %info;
|
push (@{$modules->{$name}}, \%info);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$route_table = `route`;
|
||||||
|
my @table_split = split("\n", $route_table);
|
||||||
|
|
||||||
$info{'destination'} = $split[0];
|
for (my $i=2; $i<=$#table_split; $i++) {
|
||||||
$info{'gateway'} = $split[1];
|
|
||||||
$info{'mask'} = $split[2];
|
|
||||||
$info{'flags'} = $split[3];
|
|
||||||
$info{'metric'} = $split[4];
|
|
||||||
$info{'ref'} = $split[5];
|
|
||||||
$info{'use'} = $split[6];
|
|
||||||
$info{'interface'} = $split[7];
|
|
||||||
|
|
||||||
$info{'_keys'} = ['destination', 'gateway', 'mask', 'flags', 'metric', 'use', 'interface'];
|
my @split = split(" ", $table_split[$i]);
|
||||||
|
|
||||||
push (@{$modules->{$name}}, \%info);
|
my %info;
|
||||||
}
|
|
||||||
|
$info{'destination'} = $split[0];
|
||||||
|
$info{'gateway'} = $split[1];
|
||||||
|
$info{'mask'} = $split[2];
|
||||||
|
$info{'flags'} = $split[3];
|
||||||
|
$info{'metric'} = $split[4];
|
||||||
|
$info{'ref'} = $split[5];
|
||||||
|
$info{'use'} = $split[6];
|
||||||
|
$info{'interface'} = $split[7];
|
||||||
|
|
||||||
|
$info{'_keys'} = ['destination', 'gateway', 'mask', 'flags', 'metric', 'use', 'interface'];
|
||||||
|
|
||||||
|
push (@{$modules->{$name}}, \%info);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
# Print module data
|
# Print module data
|
||||||
sub print_module ($$) {
|
sub print_module ($$) {
|
||||||
@ -309,14 +431,18 @@ my $enable_all = 0;
|
|||||||
|
|
||||||
$interval = $ARGV[0];
|
$interval = $ARGV[0];
|
||||||
if ($#ARGV == 0){
|
if ($#ARGV == 0){
|
||||||
$enable_all = 1;
|
$enable_all = 1;
|
||||||
|
}
|
||||||
|
if ($interval!=/[:alpha:]/){
|
||||||
|
splice @ARGV,0,1;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach my $module (@ARGV) {
|
foreach my $module (@ARGV) {
|
||||||
if ($module eq "all"){
|
if ($module eq "all"){
|
||||||
$enable_all = 1;
|
$enable_all = 1;
|
||||||
}
|
}else {
|
||||||
$enabled{$module} = 1;
|
$enabled{$module} = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check execution interval
|
# Check execution interval
|
||||||
@ -333,76 +459,107 @@ close (FILE);
|
|||||||
# Retrieve hardware information
|
# Retrieve hardware information
|
||||||
$Mode = 'LSHW';
|
$Mode = 'LSHW';
|
||||||
$Separator = '\s+\*\-';
|
$Separator = '\s+\*\-';
|
||||||
my @hwinfo = `lshw 2>/dev/null`;
|
my @hwinfo;
|
||||||
if ($? != 0) {
|
if (is_enabled $AIX) {
|
||||||
$Mode = 'HWINFO';
|
$Separator = '^\s*$';
|
||||||
$Separator = 'Hardware Class:';
|
@hwinfo=`prtconf 2>/dev/null`;
|
||||||
@hwinfo = `hwinfo --cpu --memory --gfxcard --netcard --cdrom --disk 2>/dev/null`;
|
} else {
|
||||||
|
@hwinfo = `lshw 2>/dev/null`;
|
||||||
|
if ($? != 0) {
|
||||||
|
$Mode = 'HWINFO';
|
||||||
|
$Separator = 'Hardware Class:';
|
||||||
|
@hwinfo = `hwinfo --cpu --memory --gfxcard --netcard --cdrom --disk 2>/dev/null`;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Parse hardware information
|
|
||||||
my %modules;
|
my %modules;
|
||||||
while (my $line = shift (@hwinfo)) {
|
|
||||||
|
if (is_enabled $AIX) {
|
||||||
|
#CPU
|
||||||
|
# VIDEO
|
||||||
|
### Not avilable in AIX ###
|
||||||
|
# NIC
|
||||||
|
### Not relevant in AIX ###
|
||||||
|
if ((test_contain('ent',\@hwinfo)) && ($enable_all == 1 || $enabled{'nic'} == 1)) {
|
||||||
|
get_module_data_aix ('NIC',\@hwinfo,'^ent',\%modules);
|
||||||
|
}
|
||||||
|
if ((test_contain('hdisk',\@hwinfo)) && ($enable_all == 1 || $enabled{'hd'} == 1)) {
|
||||||
|
get_module_data_aix ('HD',\@hwinfo,'^hdisk',\%modules);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach my $line (@hwinfo) {
|
||||||
|
chomp ($line);
|
||||||
|
#CPU
|
||||||
|
if (($line =~ /^Memory Size:/) && ($enable_all == 1 || $enabled{'ram'} == 1)) {
|
||||||
|
get_module_data_aix_ram_cpu ('RAM', \@hwinfo, ['Memory Size','Good Memory Size'], \%modules);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (($line =~ /^System Model/) && ($enable_all == 1 || $enabled{'cpu'} == 1)) {
|
||||||
|
get_module_data_aix_ram_cpu ('CPU', \@hwinfo, ['System Model', 'Processor Implementation Mode', 'Number Of Processors'], \%modules);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
# Parse hardware information
|
||||||
|
while (my $line= shift (@hwinfo)) {
|
||||||
chomp ($line);
|
chomp ($line);
|
||||||
|
# CPU
|
||||||
|
if (($line =~ /\*\-cpu/ || $line =~ /Hardware Class: cpu/) && ($enable_all == 1 || $enabled{'cpu'} == 1)) {
|
||||||
|
if ($Mode eq 'LSHW') {
|
||||||
|
get_module_data ('CPU', \@hwinfo, ['product', 'vendor', 'capacity'], \%modules);
|
||||||
|
} else {
|
||||||
|
get_module_data ('CPU', \@hwinfo, ['Model', 'Vendor', 'Clock'], \%modules);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# CPU
|
# RAM
|
||||||
if (($line =~ /\*\-cpu/ || $line =~ /Hardware Class: cpu/) && ($enable_all == 1 || $enabled{'cpu'} == 1)) {
|
if (($line =~ /\*\-bank/ || $line =~ /\*\-memory/ || $line =~ /Hardware Class: memory/) && ($enable_all == 1 || $enabled{'ram'} == 1)) {
|
||||||
if ($Mode eq 'LSHW') {
|
if ($Mode eq 'LSHW') {
|
||||||
get_module_data ('CPU', \@hwinfo, ['product', 'vendor', 'capacity'], \%modules);
|
get_module_data ('RAM', \@hwinfo, ['description', 'size'], \%modules);
|
||||||
} else {
|
} else {
|
||||||
get_module_data ('CPU', \@hwinfo, ['Model', 'Vendor', 'Clock'], \%modules);
|
get_module_data ('RAM', \@hwinfo, ['Model', 'Memory Size'], \%modules);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# RAM
|
# VIDEO
|
||||||
if (($line =~ /\*\-bank/ || $line =~ /Hardware Class: memory/) && ($enable_all == 1 || $enabled{'ram'} == 1)) {
|
if (($line =~ /\*\-display/ || $line =~ /Hardware Class: graphics card/) && ($enable_all == 1 || $enabled{'video'} == 1)) {
|
||||||
if ($Mode eq 'LSHW') {
|
if ($Mode eq 'LSHW') {
|
||||||
get_module_data ('RAM', \@hwinfo, ['description', 'size'], \%modules);
|
get_module_data ('VIDEO', \@hwinfo, ['product', 'description', 'vendor'], \%modules);
|
||||||
} else {
|
} else {
|
||||||
get_module_data ('RAM', \@hwinfo, ['Model', 'Memory Size'], \%modules);
|
# Spaces before Device and Vendor are intentional to avoid matching SubDevice and SubVendor
|
||||||
}
|
get_module_data ('VIDEO', \@hwinfo, ['Model', ' Device', ' Vendor'], \%modules);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# VIDEO
|
# NIC
|
||||||
if (($line =~ /\*\-display/ || $line =~ /Hardware Class: graphics card/) && ($enable_all == 1 || $enabled{'video'} == 1)) {
|
if (($line =~ /\*\-network/ || $line =~ /Hardware Class: network/) && ($enable_all == 1 || $enabled{'nic'} == 1)) {
|
||||||
if ($Mode eq 'LSHW') {
|
if ($Mode eq 'LSHW') {
|
||||||
get_module_data ('VIDEO', \@hwinfo, ['product', 'description', 'vendor'], \%modules);
|
get_module_data ('NIC', \@hwinfo, ['product', 'description', 'vendor', 'serial'], \%modules);
|
||||||
} else {
|
} else {
|
||||||
# Spaces before Device and Vendor are intentional to avoid matching SubDevice and SubVendor
|
# Spaces before Device and Vendor are intentional to avoid matching SubDevice and SubVendor
|
||||||
get_module_data ('VIDEO', \@hwinfo, ['Model', ' Device', ' Vendor'], \%modules);
|
get_module_data ('NIC', \@hwinfo, ['Model', ' Device', ' Vendor', 'HW Address'], \%modules);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# NIC
|
# CDROM
|
||||||
if (($line =~ /\*\-network/ || $line =~ /Hardware Class: network/) && ($enable_all == 1 || $enabled{'nic'} == 1)) {
|
if (($line =~ /\*\-cdrom/ || $line =~ /Hardware Class: cdrom/) && ($enable_all == 1 || $enabled{'cdrom'} == 1)) {
|
||||||
if ($Mode eq 'LSHW') {
|
if ($Mode eq 'LSHW') {
|
||||||
get_module_data ('NIC', \@hwinfo, ['product', 'description', 'vendor', 'serial'], \%modules);
|
get_module_data ('CDROM', \@hwinfo, ['product', 'description', 'vendor'], \%modules);
|
||||||
} else {
|
} else {
|
||||||
# Spaces before Device and Vendor are intentional to avoid matching SubDevice and SubVendor
|
# Spaces before Device and Vendor are intentional to avoid matching SubDevice and SubVendor
|
||||||
get_module_data ('NIC', \@hwinfo, ['Model', ' Device', ' Vendor', 'HW Address'], \%modules);
|
get_module_data ('CDROM', \@hwinfo, ['Model', ' Device', ' Vendor'], \%modules);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# CDROM
|
# HD
|
||||||
if (($line =~ /\*\-cdrom/ || $line =~ /Hardware Class: cdrom/) && ($enable_all == 1 || $enabled{'cdrom'} == 1)) {
|
if (($line =~ /\*\-disk/ || $line =~ /Hardware Class: disk/) && ($enable_all == 1 || $enabled{'hd'} == 1)) {
|
||||||
if ($Mode eq 'LSHW') {
|
if ($Mode eq 'LSHW') {
|
||||||
get_module_data ('CDROM', \@hwinfo, ['product', 'description', 'vendor'], \%modules);
|
get_module_data ('HD', \@hwinfo, ['product', 'description', 'size'], \%modules);
|
||||||
} else {
|
} else {
|
||||||
# Spaces before Device and Vendor are intentional to avoid matching SubDevice and SubVendor
|
get_module_data ('HD', \@hwinfo, ['Model', 'Serial ID', 'Size'], \%modules);
|
||||||
get_module_data ('CDROM', \@hwinfo, ['Model', ' Device', ' Vendor'], \%modules);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# HD
|
|
||||||
if (($line =~ /\*\-disk/ || $line =~ /Hardware Class: disk/) && ($enable_all == 1 || $enabled{'hd'} == 1)) {
|
|
||||||
if ($Mode eq 'LSHW') {
|
|
||||||
get_module_data ('HD', \@hwinfo, ['product', 'description', 'size'], \%modules);
|
|
||||||
} else {
|
|
||||||
get_module_data ('HD', \@hwinfo, ['Model', 'Serial ID', 'Size'], \%modules);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Software
|
# Software
|
||||||
if ($enable_all == 1 || $enabled{'software'} == 1) {
|
if ($enable_all == 1 || $enabled{'software'} == 1) {
|
||||||
get_software_module_data ('Software', \%modules);
|
get_software_module_data ('Software', \%modules);
|
||||||
@ -410,12 +567,12 @@ if ($enable_all == 1 || $enabled{'software'} == 1) {
|
|||||||
|
|
||||||
#init_services
|
#init_services
|
||||||
if ($enable_all == 1 || $enabled{'init_services'} == 1) {
|
if ($enable_all == 1 || $enabled{'init_services'} == 1) {
|
||||||
get_servicies_init_machine ('Init services', \%modules);
|
get_servicies_init_machine ('Init_services', \%modules);
|
||||||
}
|
}
|
||||||
|
|
||||||
#filesystem
|
#filesystem
|
||||||
if ($enable_all == 1 || $enabled{'filesystem'} == 1) {
|
if ($enable_all == 1 || $enabled{'filesystem'} == 1) {
|
||||||
get_file_system('File system', \%modules);
|
get_file_system('Filesystem', \%modules);
|
||||||
}
|
}
|
||||||
|
|
||||||
#processes
|
#processes
|
||||||
@ -442,7 +599,6 @@ if ($enable_all == 1 || $enabled{'route'} == 1) {
|
|||||||
if ($enable_all == 1 || $enabled{'kernel'} == 1){
|
if ($enable_all == 1 || $enabled{'kernel'} == 1){
|
||||||
get_kernel_info ('Kernel', \%modules);
|
get_kernel_info ('Kernel', \%modules);
|
||||||
}
|
}
|
||||||
|
|
||||||
# Print module data
|
# Print module data
|
||||||
print "<inventory>\n";
|
print "<inventory>\n";
|
||||||
while (my ($name, $module) = each (%modules)) {
|
while (my ($name, $module) = each (%modules)) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user