- Inwentaryzacja serwera dedykowanego – system Windows
- Inwentaryzacja serwera dedykowanego – system Linux
- Skrypt do skopiowania – inwentaryzacja na systemie Windows
- Skrypt do skopiowania – inwentaryzacja na systemie Linux
Inwentaryzacja serwera dedykowanego – system Windows
Aby wykonać inwentaryzację serwera dedykowanego na systemie Windows:
- Pobierz skrypt dostępny pod adresem: https://homecloud.pl/support/collect.ps1
- Umieść pobrany skrypt na serwerze i uruchom go za pośrednictwem PowerShell’a.
- Wyświetlony wynik wyślij jako tekst na adres e-mail: info@homecloud.pl.
Inwentaryzacja serwera dedykowanego – system Linux
Aby wykonać inwentaryzację serwera dedykowanego na systemie Linux niezbędne będzie zainstalowanie poniższych binarek:
- dmidecode
- smartctl
Dodatkowo jeżeli posiadasz kontroler raid potrzebne będą dodatkowe binarki:
- MegaCli64 (LSI/Avago)
- hpacucli (HP p410)
- tw_cli (3Ware)
- megactl (SCSI)
Jak wykonać inwentaryzacje serwera dedykowanego CentOS (system Linux)?
- Zainstaluj niezbędne binarki za pomocą polecenia:
yum install dmidecode smartmontools
- Po wykonaniu polecenia, pojawi się informacja o instalowanej paczce. Wybieramy klawisz: „y” i przechodzimy do instalacji.

- Po zakończeniu instalacji, zostanie wyświetlony komunikat: Complete!

- Aby uruchomić skrypt do inwentaryzacji niezbędne jest zainstalowanie modułu PERL. Instalację modułu PERL wykonasz za pomocą polecenia:
yum install perl
- Po zainstalowaniu modułu PERL, należy pobierać skrypt, który umożliwi przeprowadzenie inwentaryzacji. Pobranie skryptu wykonaj za pomocą poniższego polecenia:
wget https://homecloud.pl/support/collect.pl
- Następnie uruchom skrypt wpisując w konsoli poniższe polecenie:
perl collect.pl
- Efektem powyższego polecenia, będzie wykonana inwentaryzacja serwera dedykowanego. Na ekranie w konsoli powinieneś otrzymać podobny wynik jak poniższy:

- Skopiuj wynik i wyślij jako tekst na adres e-mail: info@homecloud.pl.
Skrypt do inwentaryzacji serwerów dedykowanych – system Windows
Poniżej znajdziesz skrypt, którego możesz samodzielnie skopiować i następnie utworzyć plik (collect.ps1) na swoim serwerze dedykowanym. Przydatne dla użytkowników, którzy nie chcą pobierać pliku collect.ps1, lecz wolą utworzyć go samodzielnie na swoim serwerze dedykowanym.
$tmp = Get-WmiObject Win32_BaseBoard
foreach($device in $tmp){
Write-Host "BoardName : " $device.Name
Write-Host "BoardManufacturer : " $device.Manufacturer
Write-Host "BoardProduct : " $device.Product
Write-Host "BoardSerial : " $device.SerialNumber
}
$tmp = Get-WmiObject win32_bios
foreach($device in $tmp){
Write-Host "BIOSName : " $device.Name
Write-Host "BIOSManufacturer : " $device.Manufacturer
Write-Host "BIOSVersion : " $device.BIOSVersion
Write-Host "BIOSReleaseDate : " $device.ReleaseDate
Write-Host "BIOSVersionSM : " $device.SMBIOSBIOSVersion
}
$tmp = Get-WmiObject Win32_ComputerSystemProduct
foreach($device in $tmp){
Write-Host "SystemVendor : " $device.Vendor
Write-Host "SystemVersion : " $device.Version
Write-Host "SystemName : " $device.Name
Write-Host "SystemID : " $device.IdentifyingNumber
}
$tmp = Get-WmiObject win32_diskDrive
foreach($device in $tmp){
Write-Host "DiskDrive : " $device.Model
Write-Host "DiskSerial : " $device.SerialNumber
Write-Host "DiskInterface : " $device.InterfaceType
Write-Host -NoNewLine "DiskSize : "; " {0:N2}" -f ($device.Size/1Gb) + " Gb"
}
$tmp = Get-WmiObject Win32_PhysicalMemory
foreach($device in $tmp){
Write-Host -NoNewLine "MemorySize : "; " {0:N2}" -f ($device.Capacity/1Gb) + " Gb"
Write-Host "MemoryManufacturer : " $device.Manufacturer
Write-Host "MemoryPartNumber : " $device.PartNumber
Write-Host "MemorySerialNumber : " $device.SerialNumber
}
$tmp = Get-WmiObject Win32_Processor
foreach($device in $tmp){
Write-Host "ProcessorID : " $device.DeviceID
Write-Host "ProcessorName : " $device.Name
Write-Host "ProcessorSpeed : " $device.CurrentClockSpeed
Write-Host "ProcessorCores : " $device.NumberOfCores
Write-Host "ProcessorLogical : " $device.NumberOfLogicalProcessors
}
$tmp = Get-WmiObject Win32_SystemEnclosure
foreach($device in $tmp){
Write-Host "EnclousureTag : " $device.Tag
Write-Host "EnclousurePartNumber : " $device.PartNumber
Write-Host "EnclousureSerialNumber : " $device.SerialNumber
}
Skrypt do inwentaryzacji serwerów dedykowanych – system Linux
Poniżej znajdziesz skrypt, którego możesz samodzielnie skopiować i następnie utworzyć plik (collect.pl) na swoim serwerze dedykowanym. Przydatne dla użytkowników, którzy nie chcą pobierać pliku collect.pl, lecz wolą utworzyć go samodzielnie na swoim serwerze dedykowanym.
#!/usr/bin/perl
use strict;
use warnings;
my $dmidecode = "dmidecode";
my $megacli = "MegaCli64";
my $megactl = "megactl";
my $hpacucli = "hpacucli";
my $twcli = "tw_cli";
my $smartctl = "smartctl" ;
# ubuntu/debian : apt install dmidecode smartmontools
# centos : yum install dmidecode smartmontools
my ( @tmp, @bios, @board, @chassis, @cpu, @memory, @storage, @raid, @cache, @bbu, @disks );
my ( %cpu_h, %memory_h );
foreach (`$dmidecode -t 0 2>/dev/null`) {
push(@bios,$1) if /Vendor:\s+(.+?)\s+$/;
push(@bios,$1) if /Version:\s+(.+?)\s+$/;
push(@bios,$1) if /Release Date:\s+(.+?)\s+$/;
}
foreach (`$dmidecode -t 1 2>/dev/null`) {
push(@chassis,$1) if /Manufacturer:\s+(.+?)\s+$/;
push(@chassis,$1) if /Product Name:\s+(.+?)\s+$/;
push(@chassis,$1) if /Serial Number:\s+(.+?)\s+$/;
}
foreach (`$dmidecode -t 2 2>/dev/null`) {
push(@board,$1) if /Manufacturer:\s+(.+?)\s+$/;
push(@board,$1) if /Product Name:\s+(.+?)\s+$/;
push(@board,$1) if /Serial Number:\s+(.+?)\s+$/;
}
my ($cpu_model, $cpu_id);
foreach (`cat /proc/cpuinfo 2>/dev/null`) {
$cpu_model = $1 if /^model name\s+:\s+(.+?)\s+$/;
$cpu_id = $1 if /^physical id\s+:\s+(\d+)\s+$/;
if (defined($cpu_model) && defined($cpu_id)) {
$cpu[$cpu_id] = $cpu_model;
undef($cpu_model);
undef($cpu_id);
}
}
my ($mem_size, $mem_type, $mem_speed);
foreach (`$dmidecode -t 17 2>/dev/null`) {
$mem_size = $1 if /^\s+Size:\s+(.+?)\s+$/ && ! /No Module Installed/;
$mem_type = $1 if /^\s+Type:\s+(.+?)\s+$/ && ! /Unknown/;
$mem_speed = $1 if /^\s+Speed:\s+(.+?)\s+$/ && ! /Unknown/;
if (defined($mem_size) && defined($mem_type) && defined($mem_speed)) {
push(@memory,$mem_size." ".$mem_type." ".$mem_speed);
undef($mem_size);
undef($mem_type);
undef($mem_speed);
}
}
my @files;
my $dirname = '/sys/bus/scsi/devices/';
if (-d $dirname) {
if (opendir (my($dh), $dirname)) {
@files = grep { !/^\./ } readdir $dh;
closedir $dh;
}
}
foreach (@files) {
my $filename = "/sys/bus/scsi/devices/$_/vendor";
if (-f $filename) {
if (open(my $fh, '<:encoding(UTF-8)', $filename)) {
while (my $row = <$fh>) {
chomp $row;
$row =~ s/^\s+|\s+$//g;
push(@storage,$row);
}
}
}
}
my @u_storage = do { my %seen; grep { !$seen{$_}++ } @storage };
my ( $raid_model, $raid_serial );
my ( $disk_model, $disk_size, $disk_serial, $disk_type );
my %tc = ( "MegaRAID" => 0, "3Ware" => 0, "LSI" => 0, "HP" => 0, "SATA" => 0 );
foreach my $type (@u_storage) {
chomp($type);
# MegaRAID (SCSI)
if ($type eq "MegaRAID" && $tc{'MegaRAID'} == 0) {
print "No $megactl command available!\n" unless (`which $megactl 2>/dev/null`);
@tmp = `$megactl 2>/dev/null`;
foreach (@tmp) {
push(@raid,$1.";") if (/a\d+\s+(.+?)\s+chan:\d+\s+ldrv:\d+\s+batt/);
push(@disks,"SCSI ".$1.";") if (/a\d+c\d+t\d+\s+(.+?)\s+a\d+d\d+/);
}
$tc{'MegaRAID'} = 1;
}
# 3ware
if ($type eq "AMCC" && $tc{'3Ware'} == 0) {
print "No $twcli command available!\n" unless (`which $twcli 2>/dev/null`);
@tmp = `$twcli info 2>/dev/null`;
my @c;
my @p;
foreach (@tmp) {
push(@c,$1) if ($_ =~ /^(c[0-9]+).*/);
}
foreach my $c (@c) {
@tmp = `$twcli /$c/bbu show all 2>/dev/null`;
foreach (@tmp) {
push(@bbu,";".$1) if ($_ =~ /Serial Number\s+=\s(\w+)/);
}
@tmp = `$twcli /$c show all 2>/dev/null`;
foreach (@tmp) {
$raid_model = $1 if ($_ =~ /Model\s+=\s(\w+)/);
$raid_serial = $1 if ($_ =~ /Serial Number\s+=\s(\w+)/);
if (defined($raid_model) && defined($raid_serial)) {
push(@raid,$raid_model.";".$raid_serial);
undef($raid_model);
undef($raid_serial);
}
push(@p,$1) if ($_ =~ /^(p[0-9]+).*/);
}
foreach my $p (@p) {
foreach (`$twcli /$c/$p show all 2>/dev/null`) {
$disk_model = $1 if ($_ =~ /.*Model\s+=\s+(.*)/);
$disk_serial = $1 if ($_ =~ /.*Serial\s+=\s+(.*)/);
$disk_size = $1 if ($_ =~ /.*Capacity\s+=\s+(.+?)\s+\(/);
$disk_type = $1 if ($_ =~ /.*Drive Type\s+=\s+(.*)/);
$disk_type = 'SATA' if (!$disk_type);
if (defined($disk_model) && defined($disk_serial) && defined($disk_size) && defined($disk_type)) {
push (@disks,"3WARE ".$disk_size." ".$disk_type." ".$disk_model.";".$disk_serial);
undef($disk_model);
undef($disk_serial);
undef($disk_size);
undef($disk_type);
}
}
}
}
$tc{'3Ware'} = 1;
}
# LSI
if ($type =~ "LSI|INTEL|SMC|AVAGO" && $tc{'LSI'} == 0) {
print "No $megacli command available!\n" unless (`which $megacli 2>/dev/null`);
foreach (`$megacli -PDlist -Aall 2>/dev/null`) {
$disk_model = $1 if (/^Inquiry Data:\s+(\w+)\s+(\w+)\s+(\w+)\s+$/);
$disk_model = $2 if (/^Inquiry Data:\s+([a-zA-Z0-9-]+)\s+([a-zA-Z0-9.]+)\s+$/);
$disk_model = $2 if (/^Inquiry Data:\s+(\w+)\s+(\w+)\s+(\w+)\s+(\w+)\s+$/);
$disk_serial = $3 if (/^Inquiry Data:\s+(\w+)\s+(\w+)\s+(\w+)\s+$/);
$disk_serial = $1 if (/^Inquiry Data:\s+([a-zA-Z0-9-]+)\s+([a-zA-Z0-9.]+)\s+$/);
$disk_serial = $1 if (/^Inquiry Data:\s+(\w+)\s+(\w+)\s+(\w+)\s+(\w+)\s+$/);
$disk_size = $1 if ($_ =~ /^Raw Size:\s+(.*)\s+\[/);
$disk_type = $1 if ($_ =~ /^PD Type:\s+(.*)/);
if (defined($disk_model) && defined($disk_serial) && defined($disk_size) && defined($disk_type)) {
push (@disks,"LSI ".$disk_size." ".$disk_type." ".$disk_model.";".$disk_serial);
undef($disk_model);
undef($disk_serial);
undef($disk_size);
undef($disk_type);
}
}
foreach (`$megacli -AdpAllInfo -aALL 2>/dev/null`) {
$raid_model = $1 if /^Product Name\s+:\s+(.*)/;
$raid_serial = $1 if /^Serial No\s+:\s+(\w+)/;
if (defined($raid_model) && defined($raid_serial)) {
push(@raid,$raid_model.";".$raid_serial);
undef($raid_model);
undef($raid_serial);
}
}
foreach (`$megacli -AdpBbuCmd -aAll 2>/dev/null`) {
push (@bbu,";".$1) if /Serial Number:\s+(\w+)/;
}
$tc{'LSI'} = 1;
}
# HP P410
if ($type eq "HP" && $tc{'HP'} == 0) {
print "No $hpacucli command available!\n" unless (`which $hpacucli 2>/dev/null`);
my $raid_sn = 0;
my $disk_sn = 0;
foreach (`$hpacucli ctrl all show config detail 2>/dev/null`){
$raid_sn = 1 if /^Smart Array/;
$raid_sn = 0 if /^\s+physicaldrive/;
$disk_sn = 1 if /^\s+physicaldrive/;
$raid_model = $1 if /^Smart Array (.*) in Slot/;
$raid_serial = $1 if ($_ =~ /^\s+Serial\s+Number:\s+(\w+)/ && $raid_sn == 1);
if (defined($raid_model) && defined($raid_serial)) {
push (@raid,$raid_model.";".$raid_serial);
undef($raid_model);
undef($raid_serial);
}
$disk_type = $1 if ($_ =~ /^\s+Interface\s+Type:\s+(\w+)/ && $disk_sn == 1);
$disk_size = $1 if ($_ =~ /^\s+Size:\s+(.*)/ && $disk_sn == 1);
$disk_serial = $1 if ($_ =~ /^\s+Serial\s+Number:\s+([\w-]+)/ && $disk_sn == 1);
$disk_model = $2 if ($_ =~ /^\s+Model:\s+(\w+)\s+(.+?)\s+$/ && $disk_sn == 1);
if (defined($disk_model) && defined($disk_serial) && defined($disk_size) && defined($disk_type)) {
chomp($disk_model);
push (@disks,"HP ".$disk_size." ".$disk_type." ".$disk_model.";".$disk_serial);
undef($disk_model);
undef($disk_serial);
undef($disk_size);
undef($disk_type);
}
push (@cache,";".$1) if ($_ =~ /^\s+Cache\s+Serial\s+Number:\s+(\w+)/ && $raid_sn == 1);
}
$tc{'HP'} = 1;
}
elsif ($tc{'SATA'} == 0) {
print "No $smartctl command available!\n" unless (`which $smartctl 2>/dev/null`);
foreach (`ls -1 /dev/sd* 2>/dev/null | grep -oE 'sd[a-z]+\$'`) {
my $sd = $_ ;
chomp($sd);
foreach (`$smartctl -i /dev/$sd 2>/dev/null`) {
$disk_model = $1 if ($_ =~ /Device\s+Model:\s+(.*)/i);
$disk_model = $1 if ($_ =~ /Product:\s+(.*)/i);
push (@disks,$disk_model.";".$1) if ($_ =~ /Serial\s+Number:\s+(.*)/i);
}
}
}
$tc{'SATA'} = 1;
}
my $host = `hostname -s`;
chomp($host);
print "\n";
print $host.";;bios"; print ";".$_ foreach (@bios); print ";\n";
print $host.";;chassis"; print ";".$_ foreach (@chassis); print ";\n";
print $host.";;board"; print ";".$_ foreach (@board); print ";\n";
print $host.";;cpu;".$_.";\n" foreach (@cpu);
print $host.";;memory;".$_.";\n" foreach (@memory);
print $host.";;controller;".$_.";\n" foreach (@raid);
print $host.";;cache;".$_.";\n" foreach (@cache);
print $host.";;battery;".$_.";\n" foreach (@bbu);
print $host.";;disk;".$_.";\n" foreach (@disks);
print "\n";