use Win32::Lanman; use Win32::Adminmisc; use Date::Manip; open(FILE,"gardes.dat"); # Format du fichier # DSK#File serveur NT# # EXC#Serveur exchange\disque où réside le fichier pub.edb et priv.edb# # while() { ($hosttype,$hostname)=split/\#/; if ($hosttype eq "DSK" ) { push( @server, $hostname); } if ($hosttype eq "EXC" ) { push( @exchange,$hostname); } # print "$hostlevel[$i] $hostname[$i] $hostadress[$i]\n"; } close(FILE); $limite=10000000; $share=""; for $server (@server) { @disks=qw(); if(!Win32::Lanman::NetServerDiskEnum("\\\\$server", \@disks)) { # print "error on $server, something went wrong; error: "; # get the error code # print Win32::Lanman::GetLastError(); # exit 1; } foreach $disk (@disks) { $share=$disk; $share=~s/:/\$/; ($nowsec,$nowmin,$nowhour,$nowmday,$nowmon,$nowyear,$nowwday,$nowyday,$nowisdst) = localtime(time()); $nowyear+=1900; ($Total, $Free) = Win32::AdminMisc::GetDriveSpace("\\\\$server\\$share\\"); $pourcent=($Free/$Total) * 100 if ($Total ne "" ); for ($i=3 ; $i < length($Total) ; $i += 4 ) {substr($Total,-$i,0) = '.' ; } for ($i=3 ; $i < length($Free) ; $i += 4 ) {substr($Free,-$i,0) = '.' ; } printf STDOUT ("%-15s,%3s,%s%s%s,%s:%s,%3d,%15s,%15s\n",$server,$disk,$nowyear,$nowmon,$nowmday,$nowhour,$nowmin,$pourcent,$Total,$Free) if ($Total ne "" ); } } for $exchange (@exchange) { undef @res; open PIPE, "dir /-c \\\\$exchange\\*.edb |"; @res = ; close PIPE or die "bad pipe: $?, $!"; for $res (@res) { if ( $res =~/edb/i ) { ($date,$time,$size,$filename)=split/\s+/,$res; for ($i=3 ; $i < length($size) ; $i += 4 ) {substr($size,-$i,0) = '.' ; } printf STDOUT ("%-40s,%10s,%10s,%10s,0,0,%15s\n",$exchange,$filename,$date,$time,$size); } } } exit;