Получить значения памяти WMI с помощью Perl - PullRequest
5 голосов
/ 18 января 2011

Мне нужно собрать данные памяти операционных систем Windows, используя WMI.В этом смысле я разработал Perl-скрипт для генерации таких данных.Тем не менее, мне интересно, если мой метод является правильным и каковы альтернативы.Предполагается, что метод сбора данных должен быть максимально широк с точки зрения ОС Windows.

Если вы не прелюбодей, вот что я проверяю:

MEM_USED = Win32_OperatingSystem->TotalVisibleMemorySize - Win32_OperatingSystem->FreePhysicalMemory
SWAP_USED = (Win32_OperatingSystem->SizeStoredInPagingFiles - Win32_OperatingSystem->FreeSpaceInPagingFiles) /  Win32_OperatingSystem->SizeStoredInPagingFiles

Это мой скрипт:

#!/bin/env perl

use Win32::OLE;

use strict;
use warnings;

my $wmi = Win32::OLE->GetObject("winmgmts://./root/cimv2")
  or die "Failed getobject\n";

my $list, my $v;

$list = $wmi->InstancesOf("Win32_OperatingSystem")
  or die "Failed getobject\n";

my $end_time = time;


my ($total_mem, $free_mem, $used_mem, $mem_percent, $free_percent);

foreach $v (in $list) {

  $total_mem = $v->{TotalVisibleMemorySize};
  $free_mem = $v->{FreePhysicalMemory};
  $used_mem = $total_mem - $free_mem;
  $mem_percent = sprintf("%.2f", $used_mem / $total_mem * 100);
  $free_percent  =  sprintf("%.2f", $free_mem / $total_mem * 100);

  print "Memory used: $mem_percent\%\n";
  print "Memory free: $free_percent\%\n";
  print "Memory total: $total_mem kb\n";
  print "Memory used: $used_mem kb\n";
  print "Memory free: $free_mem kb\n";

  my $total_swap_mem = $v->{SizeStoredInPagingFiles};
  my $free_swap_mem = $v->{FreeSpaceInPagingFiles};
  my $used_swap_mem = $total_swap_mem - $free_swap_mem;
  my $used_swap_mem_perc = ($total_swap_mem - $free_swap_mem) / $total_swap_mem * 100;

  printf "Swap total:%d kb\n", $total_swap_mem;
  printf "Swap free:%d kb\n", $free_swap_mem;
  printf "Swap used:%d kb\n", $used_swap_mem;
  printf "Swap used:%.2f %%\n", $used_swap_mem_perc;
}

Примечание: В 2011-01-19 я обновил этот скрипт, так как в то время не было конфликтов с опубликованными комментариями.

1 Ответ

3 голосов
/ 28 ноября 2011

Я предлагаю вам взглянуть на этот маленький проект Perl:

Проверка WMI Plus

Это клиент меньше, работает под Linux и работает также с удаленными компьютерами Windows. Я недавно использовал его для мониторинга использования памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...