Script para comprimir logs - alterações

PHP, Java, JavaScript, XML, XHTML, HTML, CSS, ASP, Delphi, Assembly, LaTeX, C, UML, Flash, Perl, SQL, Python, Zope, Pascal, WML. Se conhece mais de 3 siglas referidas, este é o forum para si.

Moderadores: Administradores, Moderadores

Script para comprimir logs - alterações

Mensagempor corre39 » Terça Mar 13, 2007 14:36

Exmos
Este Script serve para comprimir os logs anteriores ao dia de hoje para poupar espaço em disco nos servidores.

Se encontrarem algum problema no script ou tiverem sugestões para optimizar digam..



strComputer = "."

str7z = "D:\7-Zip\7z.exe"

i=0



If WScript.Arguments.Count = 0 then



WScript.Echo "Falta Path para Directório. Utilização: cscript compress.vbs dir1 ""dir 2"" (etc)"

Else

'Por cada pasta passada como argumento

For Each strArgument in WScript.Arguments

strDir = WScript.Arguments.Item(i)

Set oShell = WScript.CreateObject("WScript.Shell")

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

'Colecção de ficheiros dentro da pasta strDir

Set colFiles = objWMIService.ExecQuery _

("ASSOCIATORS OF {Win32_Directory.Name='"& strDir &"'} Where " _

& "ResultClass = CIM_DataFile")

'Monitor de processos que me informa dos processos que são terminados

Set colMonitoredProcesses = objWMIService. _

ExecNotificationQuery("select * from __instancedeletionevent " _

& "within 1 where TargetInstance isa 'Win32_Process'")



If colFiles.Count >0 Then

'Por cada ficheiro

For Each objFile In colFiles

'Só os Logs é que interessam. Qualquer outro ficheiro passa a frente

If WMIDateStringToDate(objFile.CreationDate) < now() And objFile.Extension = "log" Then

'Rotina de compressão

oShell.Run ""& str7z &" a -tzip """& strDir &"""\"& objFile.FileName &".zip "_

& " """& strDir &"""\"& objFile.FileName &".log"

WScript.Echo "Criei o ficheiro "& strDir &"\"& objFile.FileName &".zip "

'Rotina de eliminação de logs

z = 0

'Loop de espera (sleep até o zip estar terminado)

Do While z = 0

Set objLatestProcess = colMonitoredProcesses.NextEvent

If objLatestProcess.TargetInstance.Name = "7z.exe" Then

'o processo 7z acabou; posso sair do loop de espera e apagar o log original

objFile.Delete

WScript.Echo "Apaguei o ficheiro "& strDir &"\"& objFile.FileName &"."& objFile.Extension &" "

z = 1

'nao deve ser necessário, mas....

Exit Do

End If

Loop

End If

Next

End if

i = i+1

Next



End If



'função para alterar o formato da data retornado pelo wmi_script

Function WMIDateStringToDate(dtmDate)

WMIDateStringToDate = CDate(Mid(dtmDate, 5, 2) & "/" & _

Mid(dtmDate, 7, 2) & "/" & Left(dtmDate, 4) _

& " " & Mid (dtmDate, 9, 2) & ":" & _

Mid(dtmDate, 11, 2) & ":" & Mid(dtmDate, _

13, 2))

End Function





WScript.Quit
Intel Core 2 Duo E6300 (3.8mhz), ASUS P5B E-PLUS
2Gb da treta DDR2 667mhz(estamerdaestasempreabloquear) e-VGA 8800GT SSC
corre39
Aprendiz
Aprendiz
 
Mensagens: 65
Registado: Terça Mar 06, 2007 0:28

Voltar para Programação

Quem está ligado:

Utilizadores a ver este Fórum: Nenhum utilizador registado e 0 visitantes

cron