Usuário com melhor resposta
Monitor de Serviços (Spooler)

Pergunta
-
Olá pessoal,
Tenho um script que encontrei aqui no forum mesmo que verifica os serviços e envia um email caso o mesmo esteja parado.
Quando é parado o serviço e executado o script, retorna um erro:
Linha: 37
Caract.: 2
Erro: O servidor rejeitou um ou mais endereços de destinatário. A resposta do servidor foi: 550 No such recipient
Código 8004020F
Origem: (null)
Se alguém puder ajudar...
Valew!!
strServidor="10.41.8.115"
strServico="spooler"
Set objShell = CreateObject("Wscript.Shell")
strCommand = "sc \\" & strServidor & " query " & strServico
Set objExec = objShell.Exec(strCommand)
Do Until objExec.Status
Wscript.Sleep 250
Loop
strRes=objExec.StdOut.ReadAll()
if instr(strRes,"STATE : 4 RUNNING")=0 then
Envia_Alerta "email"
end if
Sub Envia_Alerta(para)
'Adaptado do post: http://forums.microsoft.com/technet-br/ShowPost.aspx?PostID=741907&SiteID=29
Set objEmail = CreateObject("CDO.Message")
objEmail.From = "email"
objEmail.To = "email"
objEmail.Subject = "ALERTA DE INDISPONIBILIDADE"
objEmail.TextBody = "serviço: " & strServico & " esta indisponivel"
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "10.41.100.5" '<-informe seu servidor smtp
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update
objEmail.Send
end sub
Respostas
-
Olá,
Desculpe pela demora... Agora eu testei aqui.... Segue o script abaixo
Atençao nos comentários onde é para alterar.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
'AQUI ESTÁ O SERVIÇO SPOOLER, ALTERE PARA QUAL SERVIÇO VOCÊ DESEJAR
Set colRunningServices = objWMIService.ExecQuery _
("Select * from Win32_Service Where Name = 'Spooler'")
For Each objService in colRunningServices
if objService.State <> "Running" Then
Envia_Alerta objService.Name
End if
Next
Sub Envia_Alerta(strServico)
Set objEmail = CreateObject("CDO.Message")
'AQUI VOCÊ COLOCA QUEM VAI ENVIAR O EMAIL
objEmail.From = "servidor@contoso.msft"
'AQUI VOCE COLOCA QUEM VAI RECEBER O EMAIL
objEmail.To = "jesiel@contoso.msft"
objEmail.Subject = "ALERTA DE INDISPONIBILIDADE"
objEmail.TextBody = "serviço: " & strServico & " esta indisponivel"
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'AQUI VOCÊ TEM QUE COLOCAR O IP DO SERVIDOR DE SMTP QUE IRÁ ENVIAR A MENSAGEM.
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "10.0.0.1" '<-informe seu servidor smtp
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update
objEmail.Send
end sub
Faça os testes e nos retorne.
Até mais,
Jesiel
Obs.: Se útil, classifique
- Marcado como Resposta Hugo R. P. Choinacki quarta-feira, 11 de fevereiro de 2009 11:23
Todas as Respostas
-
Pessoal,
Eu gostaria que ele enviasse um email com o alerta...
Alguém ajuda a adaptar?...
Muito Obrigado pessoal...
segue...
strComputer = "10.41.8.115"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colRunningServices = objWMIService.ExecQuery _
("Select * from Win32_Service Where Name = 'Spooler'")
For Each objService in colRunningServices
Wscript.Echo objService.DisplayName & " -- " & objService.State
Next- Sugerido como Resposta altairsantos sexta-feira, 17 de setembro de 2010 14:35
-
-
Olá,
Alterei só que não testei, faça os testes aí e nos retorne.
Até mais,
Jesiel
Obs.: Se útil, classifique
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colRunningServices = objWMIService.ExecQuery _
("Select * from Win32_Service Where Name = 'Spooler'")
For Each objService in colRunningServices
if objService.State <> "Running" Then
Envia_Alerta "email"
End if
Next
Sub Envia_Alerta(para)
'Adaptado do post: http://forums.microsoft.com/technet-br/ShowPost.aspx?PostID=741907&SiteID=29
Set objEmail = CreateObject("CDO.Message")
objEmail.From = "email"
objEmail.To = "email"
objEmail.Subject = "ALERTA DE INDISPONIBILIDADE"
objEmail.TextBody = "serviço: " & strServico & " esta indisponivel"
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "10.41.100.5" '<-informe seu servidor smtp
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update
objEmail.Send
end sub
-
Olá Jesiel,
Quando paro o serviço de impressão, retornou o mesmo erro:
Linha: 37
Caract.: 2
Erro: O servidor rejeitou um ou mais endereços de destinatário. A resposta do servidor foi: 550 No such recipient
Código 8004020F
Origem: (null)
Se puder ajudar, preciso muito desse script...
Obrigado
-
Olá,
Desculpe pela demora... Agora eu testei aqui.... Segue o script abaixo
Atençao nos comentários onde é para alterar.
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
'AQUI ESTÁ O SERVIÇO SPOOLER, ALTERE PARA QUAL SERVIÇO VOCÊ DESEJAR
Set colRunningServices = objWMIService.ExecQuery _
("Select * from Win32_Service Where Name = 'Spooler'")
For Each objService in colRunningServices
if objService.State <> "Running" Then
Envia_Alerta objService.Name
End if
Next
Sub Envia_Alerta(strServico)
Set objEmail = CreateObject("CDO.Message")
'AQUI VOCÊ COLOCA QUEM VAI ENVIAR O EMAIL
objEmail.From = "servidor@contoso.msft"
'AQUI VOCE COLOCA QUEM VAI RECEBER O EMAIL
objEmail.To = "jesiel@contoso.msft"
objEmail.Subject = "ALERTA DE INDISPONIBILIDADE"
objEmail.TextBody = "serviço: " & strServico & " esta indisponivel"
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'AQUI VOCÊ TEM QUE COLOCAR O IP DO SERVIDOR DE SMTP QUE IRÁ ENVIAR A MENSAGEM.
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "10.0.0.1" '<-informe seu servidor smtp
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update
objEmail.Send
end sub
Faça os testes e nos retorne.
Até mais,
Jesiel
Obs.: Se útil, classifique
- Marcado como Resposta Hugo R. P. Choinacki quarta-feira, 11 de fevereiro de 2009 11:23
-
-
Olá,
hugorpc, é complicado porque você vai colocar este script no schedulle certo???
Daria pra fazer da seguinte forma:
Se o serviço estiver OK. ele gera um log em um arquivo texto ao invés de mandar email.
E criarmos um outro script para ler o arquivo de log e mandar um email com todo o log (por hora por exemplo)
Se te atender dessa maneira e precisar de ajuda, só avisar.
Até mais,
Jesiel
Obs.: Se útil, classifique
-
Pessoal,
Utilizei esse script também, e ficou perfeito...
Só estou em dúvida referente esses links:
("http://schemas.microsoft.com/cdo/configuration/sendusing")
("http://schemas.microsoft.com/cdo/configuration/smtpserver")
("http://schemas.microsoft.com/cdo/configuration/smtpserverport")
Eu tento acessar pelo navegar e consta como página indisponível, mas o script funciona. Então para que serve esses links?
Desculpem por aproveitar o tópico para tirar essa dúvida....
Obrigado..
-
-
-
Jesiel,
Como faço para que no assunto e no corpo do e-mail conste o hostname da máquina?
Tentei:
objEmail.Subject = "ALERTA DE INDISPONIBILIDADE"
objEmail.TextBody = "serviço: " & strServico & " esta indisponivel " & strComputer & ""
Mas não funcionou.
Pode me ajudar?
-
-
Edson S Freitas disse:Alguém faz idéia?
Jesiel,
Como faço para que no assunto e no corpo do e-mail conste o hostname da máquina?
Tentei:
objEmail.Subject = "ALERTA DE INDISPONIBILIDADE"
objEmail.TextBody = "serviço: " & strServico & " esta indisponivel " & strComputer & ""
Mas não funcionou.
Pode me ajudar?
Agradeço qualquer ajuda... -
Olá,
Edson, utilize as linhas abaixo:
Set objNetwork = CreateObject("Wscript.Network")
strComputerName = objNetwork.Computername
Coloque logo abaixo do Set ColRunningServices
Aí, embaixo da linha objEmail.TextBody = "serviço: " & strServico & " esta indisponivel"
Adicione a linha abaixo:
objEmail.TextBody = "Computador: " & strComputerName
Até mais,
Jesiel
Obs.: Se útil, classifique
-
Jesiel, grato pela ajuda.
Com as modificações estou recebendo e-mail porém no corpo do e-mail vem apenas "Computador: XXXXXX", não vem mais a informação sobre o nome do serviço, da linha:
objEmail.TextBody = "serviço: " & strServico & " esta indisponivel "
Segue meu script adaptado:
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
'AQUI ESTÁ O SERVIÇO SPOOLER, ALTERE PARA QUAL SERVIÇO VOCÊ DESEJAR
Set colRunningServices = objWMIService.ExecQuery _
("Select * from Win32_Service Where Name = 'Spooler'")
Set objNetwork = CreateObject("Wscript.Network")
strComputerName = objNetwork.Computername
For EachEnviarobjService in colRunningServices
if objService.State <> "Running" Then
Envia_Alerta objService.Name
End if
Next
Sub Envia_Alerta(strServico)
Set objEmail = CreateObject("CDO.Message")
'AQUI VOCÊ COLOCA QUEM VAI ENVIAR O EMAIL
objEmail.From = "teste@teste.com.br"
'AQUI VOCE COLOCA QUEM VAI RECEBER O EMAIL
objEmail.To = "teste@teste.com.br"
objEmail.Subject = "ALERTA DE INDISPONIBILIDADE"
objEmail.TextBody = "serviço: " & strServico & " esta indisponivel"
objEmail.TextBody = "Computador: " & strComputerName
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'AQUI VOCÊ TEM QUE COLOCAR O IP DO SERVIDOR DE SMTP QUE IRÁ ENVIAR A MENSAGEM.
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "XXX.X.X.XXX" '<-informe seu servidor smtp
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update
objEmail.Send
end sub
Pode me ajudar novamente? -
Olá Edson,
Segue abaixo o script corrigido:
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
'AQUI ESTÁ O SERVIÇO SPOOLER, ALTERE PARA QUAL SERVIÇO VOCÊ DESEJAR
Set colRunningServices = objWMIService.ExecQuery _
("Select * from Win32_Service Where Name = 'Spooler'")
For Each objService in colRunningServices
if objService.State <> "Running" Then
Envia_Alerta objService.Name
End if
Next
Sub Envia_Alerta(strServico)
Set objEmail = CreateObject("CDO.Message")
Set objNetwork = CreateObject("Wscript.Network")
strComputerName = objNetwork.Computername
'AQUI VOCÊ COLOCA QUEM VAI ENVIAR O EMAIL
objEmail.From = "teste@teste.com.br"
'AQUI VOCE COLOCA QUEM VAI RECEBER O EMAIL
objEmail.To = "teste@tete.com.br"
objEmail.Subject = "ALERTA DE INDISPONIBILIDADE"
objEmail.TextBody = "serviço: " & strServico & " esta indisponivel" & vbcrlf
objEmail.TextBody = objEmail.TextBody & "Computador: " & strComputerName
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'AQUI VOCÊ TEM QUE COLOCAR O IP DO SERVIDOR DE SMTP QUE IRÁ ENVIAR A MENSAGEM.
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "xxx.xxx.xxx.xxx" '<-informe seu servidor smtp
objEmail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objEmail.Configuration.Fields.Update
objEmail.Send
end sub
Até mais,
Jesiel
Obs.: Se útil, classifique
-
-
Hugo e amigos,
Pelo que entendi se o status do processo for diferente de rodando ele toma as ações que vc programar, mas o problema que tenho é status "Não respondendo". Dessa forma o script enxerga o programa como aberto ou seja rodando, mas na verdade suas funções já eram pois travou e parou.
Tem que haver alguma maneira de monitorar isso, pois se o sistema gera essa resposta ele deve alterar alguma variavel, basta só saber qual.
Meu post: http://social.technet.microsoft.com/Forums/pt-BR/scriptadminpt/thread/9149e32b-fbb0-47f7-be13-47fd27b9f3d4/
Obrigado.
Jensen Clayton