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
|
package FusionInventory::Agent::Task::Inventory::BSD;
use strict;
use warnings;
use English qw(-no_match_vars);
use FusionInventory::Agent::Tools;
our $runAfter = ["FusionInventory::Agent::Task::Inventory::Generic"];
sub isEnabled {
return $OSNAME =~ /freebsd|openbsd|netbsd|gnukfreebsd|gnuknetbsd|dragonfly/;
}
sub doInventory {
my (%params) = @_;
my $inventory = $params{inventory};
# Basic operating system informations
my $OSVersion = getFirstLine(command => 'uname -r');
my $OSComment = getFirstLine(command => 'uname -v');
# Get more information from the kernel configuration file
my $date;
my $handle = getFileHandle(command => "sysctl -n kern.version");
while (my $line = <$handle>) {
if ($line =~ /^\S.*\#\d+:\s*(.*)/) {
$date = $1;
next;
}
if ($line =~ /^\s+(.+):(.+)$/) {
my $origin = $1;
my $kernconf = $2;
$kernconf =~ s/\/.*\///; # remove the path
$OSComment = $kernconf . " (" . $date . ")\n" . $origin;
}
}
close $handle;
my $boottime = getFirstMatch(command => "sysctl -n kern.boottime", pattern => qr/sec = (\d+)/);
my $OSName = $OSNAME;
if (canRun('lsb_release')) {
$OSName = getFirstMatch(
command => 'lsb_release -d',
pattern => qr/Description:\s+(.+)/
);
}
$inventory->setHardware({
OSNAME => $OSName,
OSVERSION => $OSVersion,
OSCOMMENTS => $OSComment,
});
$inventory->setOperatingSystem({
NAME => $OSName,
VERSION => $OSVersion,
KERNEL_VERSION => $OSVersion,
FULL_NAME => $OSNAME,
BOOT_TIME => getFormatedLocalTime($boottime)
});
}
1;
|