Есть не мало решений позволяющих мониторить свободное дисковое пространство в ОС Windows, но все они либо платные, либо тяжелые, поэтому пришлось написать скрипт на VBA, который выполняет только эту задачу. Никакого дополнительного ПО ставить не нужно, скрипт работает на ОС Windows XP, на серверных Windows 2003 и 2008. Скрипт запускается по шедулеру, проверяет свободное место на указанных дисках, если места меньше 5% от размера раздела либо меньше 4Гб (эти значения можно изменить), скрипт отправляет письмо на указанный e-mail адрес с предупреждением.
Собственно код скрипта:
df.vbs
'Disk free by Yury Konovalov (c) 2011'select disk for monitoringdisks="C,D,E" 'Диски которые нужно мониторитьDim fso1Set fso1 = WScript.CreateObject("Scripting.FileSystemObject")Set oDrives = fso1.Drivesdisk = Split(disks,",")For i = 0 To Ubound(disk) Set oDrive1 = fso1.GetDrive(disk(i)) totalSize = FormatNumber (oDrive1.TotalSize,0) freeSize = FormatNumber (oDrive1.FreeSpace,0) Onepercent=totalsize/100 percent=Cint(freesize/Onepercent) totalsize=CLng(totalsize/1024/1024) freesize=CLng(freesize/1024/1024) Set WshNetwork = WScript.CreateObject("WScript.Network") 'WScript.Echo WshNetwork.ComputerName Set objSystemInfo = CreateObject("ADSystemInfo") 'wscript.echo objSystemInfo.DomainShortName 'Здесь можно поменять значения пределов, на которые будет реагировать скрипт if freesize < 4096 or percent < 5 then ends="<br>"&chr(13)&chr(10) msg = "<html>Domain:<b>"&objSystemInfo.DomainShortName&ends&"</b>Hostmame: <b>"&WshNetwork.ComputerName&ends&"</b>Disk <b>"&disk(i)&":"&ends&"</b>Total Size: <b>"&totalsize&" MB</b>"&ends&"Free Size: <b>"&freesize&" MB</b>"&ends&"Free: <b>"&percent&"%</b>" msg=msg&"<p></html>" 'Msgbox msg sendMail() end ifNextFunction sendMail()' Параметры отправки сообщенияstrSmtpServer="mail.domain.com" ' имя почтового сервера, в моем случае это ExchangestrSmtpPort=25strSmtpAuth="no"strSmtpSsl="no"strSendingEmail="diskfree@domain.com" ' Имя отправителяstrReportEmail="admin@domain.com" ' Имя получателя'WScript.Echo logPath & "\backup" & strDate & ".html"Set objMessage = CreateObject("CDO.Message")objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2objMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSmtpServerobjMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = strSmtpPortIf strSmtpAuth = "yes" ThenobjMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 'use '2' for NTLM authenticationobjMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = strSmtpUserobjMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = strSmtpPassEnd IfIf strSmtpSsl = "yes" ThenobjMessage.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = TrueEnd IfobjMessage.Configuration.Fields.UpdateobjMessage.Subject = "Warning! Disk is full" & strDate & "."objMessage.From = strSendingEmailobjMessage.To = strReportEmailobjMessage.HTMLBody = msgobjMessage.SendEnd FunctionПример сообщения:
subject:Warning! Disk is full.
Domain:KRUL
Hostmame: ASUSS2
Disk C:
Total Size: 20075 MB
Free Size: 4091 MB
Free: 20%
Способ мониторинга дискового пространства в Linux описан тут:мониторинг дисового пространства в linux