Usuário com melhor resposta
Erro na escrita do log mas funções ok

Pergunta
-
Ba galera.
boa tarde tche.
Utilizo o script abaixo para monitorar via ping alguns servidores tche, e hoje o pessoal que fica de olho no log quando o mesmo é disparado por e-mail reclamou que os nomes dos servidores não estação sendo escritos corretamente tche.
por exemplo, da lista de servidores caso um falhe, a condição de enviar e-mail é iniciada, porem quando o email é encaminhado ele vai com o corpo do e-mail o log e o arquivo tche, mais tanto no arquivo como no log vai somente o nome do primeiro servidor consultado tche.
já verifiquei pelo networkmonitor, tche e validei que o ping esta sendo feito para todos os server, o problema esta somente na escrita do log para, alguém consegue me indicar o que mudar tche.
obrigado.
código.
On error resume next Const ADS_PROPERTY_CLEAR = 1 Dim fso Dim logNoLimit Dim objRecordSet Const ForAppending = 8 Set fso = CreateObject("Scripting.FileSystemObject") dtmThisDay = Day(Date) dtmThisMonth = Month(Date) dtmThisYear = Year(Date) DataHora = dtmThisYear & "-" & dtmThisMonth & "-" & dtmThisDay Hora = Hour(Time) Minuto = Minute(Time) H_agora = hora & "-" & Minuto '############## CRIA A PASTA E O ARQUIVO #################### If fso.FolderExists("c:\MONITORAMENTO\PERIODICO\"&DataHora&"") Then Set logNoLimit = fso.OpenTextFile ("c:\MONITORAMENTO\PERIODICO\"&DataHora&"\Checagem_"&H_agora&".txt", ForAppending, True) Else Set objFSO = CreateObject("Scripting.FileSystemObject") Set objFolder = objFSO.CreateFolder("c:\MONITORAMENTO\PERIODICO\"&DataHora&"") Set logNoLimit = fso.OpenTextFile ("c:\MONITORAMENTO\PERIODICO\"&DataHora&"\Checagem_"&H_agora&".txt", ForAppending, True) End If '############### GRAVA O LOG NO ARQUIVO ###################### Do While Counter < 2 logNoLimit.WriteLine("") logNoLimit.WriteLine ("=====================================================================") logNoLimit.WriteLine ("==================== Checagem diária dos servidores ========================") logNoLimit.WriteLine ("=====================================================================") logNoLimit.WriteLine ("========================= "& Time &" "& DataHora & " ============================") logNoLimit.WriteLine ("=====================================================================") logNoLimit.WriteLine("") Set objRecordSet = objCommand.Execute '########################## Verifica Link ############################## strMachines = "server1;server2" aMachines = split(strMachines, ";") For Each machine in aMachines Set objPing = GetObject("winmgmts:{impersonationLevel=impersonate}")._ ExecQuery("select * from Win32_PingStatus where address = '"_ & machine & "'") Counter = Counter + 1 For Each objStatus in objPing If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>"0" Then logNoLimit.WriteLine ("O Servidor não está conectado! - " & "( " & aMachines(x) & " )") sendmail= "sim" else logNoLimit.WriteLine ("Servidor " & aMachines(x) & " está OK.") End If Next Next objRecordset.MoveNext logNoLimit.Close '######################################### COMEÇA O ENVIO DA MENSAGEM ####################################################### If sendmail = "sim" then Const ForReading = 1, ForWriting = 2 '################ ABRE O ARQUIVO ########### Set f = fso.OpenTextFile("c:\MONITORAMENTO\PERIODICO\"&DataHora&"\Checagem_"&H_agora&".txt", ForReading) BodyText = f.ReadAll f.Close Set f = Nothing Set fso = Nothing '################ ENVIA A MENSAGEM ########### Set objEmail = CreateObject("CDO.Message") objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.server.com.br" objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 objEmail.From = "MONITORAMENTO<monitoracao@server.com.br>" objEmail.Subject = "ATENÇÃO - PROBLEMAS" objEmail.To = "admin@server.com.br" objEmail.Textbody = BodyText objEmail.AddAttachment "c:\MONITORAMENTO\PERIODICO\"&DataHora&"\Checagem_"&H_agora&".txt" objEmail.Configuration.Fields.Update objEmail.Send '################ FIM DO ENVIO ################### End If wscript.sleep (300000) Wend Counter = 0 Loop Until Counter = 2
- Editado Fábio JrModerator terça-feira, 30 de abril de 2013 23:27 Formatação do código
Respostas
-
Marcelo,
Tente alterar o FOR EACH do Ping
For Each objStatus in objPing If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>"0" Then logNoLimit.WriteLine ("O Servidor não está conectado! - " & "( " & machine & " )") sendmail= "sim" else logNoLimit.WriteLine ("Servidor " & machine & " está OK.") End If Next
Apenas troquei onde estava aMachines(x) por machine.
Não testei, apenas passei o olho e me pareceu que isto estava errado.
Fábio de Paula Junior
- Marcado como Resposta Marcelo TI quinta-feira, 2 de maio de 2013 13:50
Todas as Respostas
-
Ba tche
se possível se algum amigo também conseguir me ajudar numa outra questão eu ficarei muito grato tche, quando ele é executado, ele gera somente um arquivo, e eu gostaria que ele gerasse um arquivo cada ciclo de 5 minutos tche.
obrigado.
-
-
Marcelo,
Tente alterar o FOR EACH do Ping
For Each objStatus in objPing If IsNull(objStatus.StatusCode) or objStatus.StatusCode<>"0" Then logNoLimit.WriteLine ("O Servidor não está conectado! - " & "( " & machine & " )") sendmail= "sim" else logNoLimit.WriteLine ("Servidor " & machine & " está OK.") End If Next
Apenas troquei onde estava aMachines(x) por machine.
Não testei, apenas passei o olho e me pareceu que isto estava errado.
Fábio de Paula Junior
- Marcado como Resposta Marcelo TI quinta-feira, 2 de maio de 2013 13:50
-
Marcelo,
Duas dicas:
1. Quando for postar algum código utilize o botão "Inserir bloco de código" (é um botão do lado do HTML com os sinais <>), escolha o idioma VB.NET quando for VBScript (é o mais parecido, creio eu).
2. Indente o seu código, fica mais fácil pra ler o código, saber onde começa um Loop\if onde termina, etc, fica mais profissional.
http://pt.wikipedia.org/wiki/Indenta%C3%A7%C3%A3o
Fábio de Paula Junior
-
Ba fabião, obrigado tche, funfo...
Ba agora fiquei um pouco triste pois em uma outra momento tche vc havia compartilhando este link http://pt.wikipedia.org/wiki/Indenta%C3%A7%C3%A3o, e eu li e achei que tinha compreendido, e pelo visto ainda estou cometendo erros ???
mesmo assim obrigado tche.
-
-