专注各种脚本编程
Baidu
加入收藏夹
本站内容有下面分类知识,欢迎您的到来^_^
shell相关:指令篇 基础篇 脚本欣赏 编程实例 shell问问 shell视频教程 技巧篇 水平测试 E文资料 vi编辑器 高级Bash脚本编程指南
其他:mysql perl c语言 oracle
当前位置:| 主页>perl>

perl脚本监控windows主机

百度收藏 QQ搜藏

perl真不错,最近用perl写了一个监控windows主机的脚本,CPU占用率不高,再进行改进处理,就能生成一个很好的报告。
perl代码如下:

#!/usr/bin/perl -w
use Win32::OLE qw[in];

my $host = $ARGV[0] || '.';
my $wmi = Win32::OLE->GetObject( "winmgmts://$host/root/cimv2" )
 or die Win32::FormatMessage( Win32::OLE::LastError() );

my %instances = (
 Win32_PhysicalMemory => \&get_pmem,
 Win32_PerfRawData_PerfOS_Memory => \&get_amem,
 Win32_Processor => \&get_load,
 Win32_LogicalDisk => \&get_disk,
);

while(1) {
 my $out = get_perf_data();
 print $out;
 print "\n";
 sleep(30);
}

sub get_perf_data {
 my($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
 $year = $year + 1900;
 $mon  = $mon + 1;
 my $str = sprintf "%4.4d-%2.2d-%2.2d",$year,$mon,$mday;
 my $timestr = sprintf "%2.2d:%2.2d:%2.2d",$hour,$min,$sec;
 
 my $mem;
 foreach ( keys %instances ) {
  my $class = $wmi->InstancesOf( $_ );
  $mem .= $instances{ $_ }->( $class );
 }
 
 my $out = "##\nCollect Time: ".$str." ".$timestr."\n".$mem."%%\r\n";
 return $out;
}

# get cpu loadavg
sub get_load {
 my $class = shift;
 my $total="";
 my $i = 0;
 $i++,$total = $total."CPU No. $i: ".$_->{LoadPercentage}."%\n" foreach in($class);
 return $total;
}

# get total memory size
sub get_pmem {
 my $class = shift;
 my $total;
 $total += $_->{Capacity} foreach in($class);
 return "Physical Memory: $total Bytes\n";
}

# get available memory size
sub get_amem {
 my $class = shift;
 my $amem;
 $amem .= join ' ', $_->{AvailableBytes} foreach in($class);
 return "Available Memory: $amem Bytes\n";
}

# get free disk sizes
sub get_disk {
 my $class = shift;
 my $total = "";
 $total .= "DISK ".$_->{DeviceID}." Free: ".$_->{FreeSpace}." Bytes\n" foreach in($class);
  
 return $total
}

上一篇:perl实现删除半年以前的文件 下一篇:perl脚本之tcp端口扫描程序

power by soyo123 2007-2008