Soy bastante nuevo en Perl. No sé si esto será novato, medio o avanzado pero yo como soy novato lo pongo aquí.
Necesito un script que me devuelva la ocupación de discos de una máquina WINDOWS. No quiero nada raro, simplemente tener ese valor para poderlo ejecutar "x" veces al día, almacenarlo y por último, si puede ser, enviarlo por mail.
De momento me basta con que me devuelva el valor y lo almacene. Buscando he encontrado un ejemplillo pero no consigo hacer que funcione:
Using perl Syntax Highlighting
# Script para monitorizar el espacio libre de discos
use Win32::OLE('in');
use constant wbemFlagReturnImmediately => 0x10;
use constant wbemFlagForwardOnly => 0x20;
$computer = ".";
$objWMIService = Win32::OLE->GetObject
("winmgmts:\\\\$computer\\root\\CIMV2") or die "WMI connection failed.\n";
$colItems = $objWMIService->ExecQuery
("SELECT FreeSpace,Name,Size FROM Win32_LogicalDisk Where Name != 'D:'","WQL",wbemFlagReturnImmediately | wbemFlagForwardOnly);
foreach my $objItem (in $colItems)
{
$nombre = $objItem->{Name};
$estot = $objItem->{Size};
$eslib = $objItem->{FreeSpace};
$esocu = $estot - $eslib;
$ocup = sprintf("%d", ( $esocu * 100 ) / $estot);
print "$nombre @@ $ocup\n";
use Win32::OLE('in');
use constant wbemFlagReturnImmediately => 0x10;
use constant wbemFlagForwardOnly => 0x20;
$computer = ".";
$objWMIService = Win32::OLE->GetObject
("winmgmts:\\\\$computer\\root\\CIMV2") or die "WMI connection failed.\n";
$colItems = $objWMIService->ExecQuery
("SELECT FreeSpace,Name,Size FROM Win32_LogicalDisk Where Name != 'D:'","WQL",wbemFlagReturnImmediately | wbemFlagForwardOnly);
foreach my $objItem (in $colItems)
{
$nombre = $objItem->{Name};
$estot = $objItem->{Size};
$eslib = $objItem->{FreeSpace};
$esocu = $estot - $eslib;
$ocup = sprintf("%d", ( $esocu * 100 ) / $estot);
print "$nombre @@ $ocup\n";
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
¿Qué es Win32_LogicalDisk? ¿Qué es WQL? Estoy muy pez, gracias.