none
Script para mapear o processo e o ID e na sequencia dar um stop RRS feed

  • Pergunta

  • Ola Senhores,

    Mas uma vez venho pedir ajuda aos colegas:

    Eu precisa do seguinte script para um workaround de problema relacionado a um exchange.

    o script seria executado e procuraria por todos os processos relacionados ao SMTPSVC.
    Na sequencia executaria um programa chamado pskill somente no id do processo inetinfo relacionado ao smtpsvc.


    Estou precisando disso, porque estamos com um problema no exchange, e executando um netstop ou parando normalmente o servico de smtp, o status fica como stopping.  a minha ideia é usar uma ferramenta que testaria a conexao smtp e como action executasse o script acima.

    Abraço
    MCP, MCDST, MCTS(Forefront, Windows7, Windows2008), MCSA, MCSE, MCT, ITIL (mcsamcse.blogspot.com)
    quarta-feira, 2 de dezembro de 2009 16:47

Respostas

  • Ola Jesiel,

    NO meu caso, estou tendo um problema com o smto, a cada dois dias mais ou menos, o serviço de correio nao recebe e-mails externos, no entanto o serviço de smtp continua como status "started". Neste caso o software de monitoramento nao detecta nenhuma anomalia, ja que o serviço fica inicializado, como workaround, tenho que matar o processo smtpsvc, este processo não fica visivel no taskmanager do windows, se eu tentar parar de forma normal o servico de SMTP, ele passa para o status "stopping". so consigo resolver usando o pskill para matar o id do processo smtpsvc relacionado ao outro processo chamado inetinfo.

    uso a ferramenta processxp do sysinternal para mostrar o id do processo smtpsvc usado pelo inetinfo.
    entao como workaround, gostaria de um script que forcasse a morte deste processo, assim eu usaria uma tarefa agendada pra fazer isso toda a noite como solucao temporaria, ate descobrirmos o que esta acontecendo com o smtp.


    obrigado
    MCP, MCDST, MCTS(Forefront, Windows7, Windows2008), MCSA, MCSE, MCT, ITIL (mcsamcse.blogspot.com)
    • Marcado como Resposta Adriano Neiva segunda-feira, 7 de dezembro de 2009 14:02
    sexta-feira, 4 de dezembro de 2009 12:36
  • Olá,

    Mas utilizando o script para fechar também o Routing Engine e o MTA não funcionou???

    Porque o SMTP é um serviço do inetinfo.exe...

    Você poderia fechar o inetinfo... mas não sei se vai dar muito certo..

    Segue abaixo um script que te mostra o PID do processo:




    Set objDictionary = CreateObject("Scripting.Dictionary")

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colProcesses = objWMIService.ExecQuery("Select * from Win32_Process")

    For each objProcess in colProcesses
        objDictionary.Add objProcess.ProcessID, objProcess.Name
    Next

    Set colThreads = objWMIService.ExecQuery _
        ("Select * from Win32_Thread")
    For each objThread in colThreads
        intProcessID = CInt(objThread.ProcessHandle)
        strProcessName = objDictionary.Item(intProcessID)
        if INSTR(UCASE(strProcessname),"INETINFO") > 0 Then
           Wscript.Echo strProcessName & VbTab & objThread.ProcessHandle & _
            VbTab & objThread.Handle & VbTab & objThread.ThreadState
        End if
    Next



    basta adaptar para executar o pskill.


    Até mais,

    Jesiel

    Obs.: Se útil, classifique




    • Marcado como Resposta Adriano Neiva segunda-feira, 7 de dezembro de 2009 14:02
    sexta-feira, 4 de dezembro de 2009 13:08

Todas as Respostas

  • Olá,

    Adriano, não entendi muito bem sua dúvida, porém, fiz um script no passado para reiniciar os serviços do Exchange.

    Verifique se te atende:


    Option Explicit

    Dim objWMIService, objItem,servico,objService,a


    Dim colListOfServices, strComputer, strService, intSleep

    'TAMANHO DO ARRAY PARA OS SERVIÇOS
    Dim arrService(3)

    'SERVIÇO (SMTP)
    arrService(1) = " 'SMTPSVC' "

    'SERVIÇO Microsoft Exchange Routing Engine
    arrService(2) = " 'ReSvc' "

    'SERVIÇO Microsoft Exchange MTA Stacks
    arrService(3) = " 'MSExchangeMTA' "

    strComputer = "."

    intSleep = 15000

    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")

    for a=1 to ubound(arrService)


       Set colListOfServices = objWMIService.ExecQuery _
       ("Select * from Win32_Service Where Name ="_
       & arrservice(a) & " ")


       For Each objService in colListOfServices

          objService.StopService()

          WScript.Echo "O Serviço "& arrService(a) & "foi Parado"   
          WSCript.Sleep intSleep
     
          objService.StartService()

          WScript.Echo "O Serviço "& arrService(a) & "foi Iniciado"   
       Next


    next


    WScript.Quit



    Até mais,

    Jesiel

    Obs.: Se útil, classifique


    quarta-feira, 2 de dezembro de 2009 18:34
  • Ola Jesiel,

    NO meu caso, estou tendo um problema com o smto, a cada dois dias mais ou menos, o serviço de correio nao recebe e-mails externos, no entanto o serviço de smtp continua como status "started". Neste caso o software de monitoramento nao detecta nenhuma anomalia, ja que o serviço fica inicializado, como workaround, tenho que matar o processo smtpsvc, este processo não fica visivel no taskmanager do windows, se eu tentar parar de forma normal o servico de SMTP, ele passa para o status "stopping". so consigo resolver usando o pskill para matar o id do processo smtpsvc relacionado ao outro processo chamado inetinfo.

    uso a ferramenta processxp do sysinternal para mostrar o id do processo smtpsvc usado pelo inetinfo.
    entao como workaround, gostaria de um script que forcasse a morte deste processo, assim eu usaria uma tarefa agendada pra fazer isso toda a noite como solucao temporaria, ate descobrirmos o que esta acontecendo com o smtp.


    obrigado
    MCP, MCDST, MCTS(Forefront, Windows7, Windows2008), MCSA, MCSE, MCT, ITIL (mcsamcse.blogspot.com)
    • Marcado como Resposta Adriano Neiva segunda-feira, 7 de dezembro de 2009 14:02
    sexta-feira, 4 de dezembro de 2009 12:36
  • Olá,

    Mas utilizando o script para fechar também o Routing Engine e o MTA não funcionou???

    Porque o SMTP é um serviço do inetinfo.exe...

    Você poderia fechar o inetinfo... mas não sei se vai dar muito certo..

    Segue abaixo um script que te mostra o PID do processo:




    Set objDictionary = CreateObject("Scripting.Dictionary")

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colProcesses = objWMIService.ExecQuery("Select * from Win32_Process")

    For each objProcess in colProcesses
        objDictionary.Add objProcess.ProcessID, objProcess.Name
    Next

    Set colThreads = objWMIService.ExecQuery _
        ("Select * from Win32_Thread")
    For each objThread in colThreads
        intProcessID = CInt(objThread.ProcessHandle)
        strProcessName = objDictionary.Item(intProcessID)
        if INSTR(UCASE(strProcessname),"INETINFO") > 0 Then
           Wscript.Echo strProcessName & VbTab & objThread.ProcessHandle & _
            VbTab & objThread.Handle & VbTab & objThread.ThreadState
        End if
    Next



    basta adaptar para executar o pskill.


    Até mais,

    Jesiel

    Obs.: Se útil, classifique




    • Marcado como Resposta Adriano Neiva segunda-feira, 7 de dezembro de 2009 14:02
    sexta-feira, 4 de dezembro de 2009 13:08
  • Pessoal, me desculpem se for muito básico, mas para encerrar o inetinfo.exe (processo do SMTP), basta utilizar o taskkill.

    tasklist /svc - Verifica os serviços e PIDs.


    inetinfo.exe                  1472 IISADMIN, IMAP4Svc, NntpSvc, POP3Svc,
                                       RESvc, SMTPSVC

    Conforme informado pelo Josiel o serviço SMTP está no processo do Inetinfo.

    Comando  para matar o processo.

    taskkill /IM "inetinfo.exe" /F

    Porem para restartar utiliza o iisreset.

    Abs,

    Luis Antonio
    Luís Antônio
    • Sugerido como Resposta Jesiel S. Pereira segunda-feira, 7 de dezembro de 2009 12:04
    sexta-feira, 4 de dezembro de 2009 18:37

  • Pessoal,

    veja a gambirra que foi feito pra resolver termporariamente o problema de recebimento de e-mails externos. digo gambiarra porque arquivo de lote nao é minha praia, da pra melhorar e muito. abraço a todos

    ******bat sendo executado a cada 15 minutos ***************

    @echo off

    start d:\bkp\port25.bat

    start d:\bkp\mataprocess.bat

    d:

    cd\

    cd bkp

    ping -n 200 localhost

    @echo off

    netstat -an | find /i "10.55.41.17:25         ESTABLISHED" && goto :eof

    d:\bkp\smtptask.bat

     

    ***********fim********************************

     

     

    **********SMTPtask.bat****************

    taskkill  /im  inetinfo.exe /f

    taskkill  /im  inetinfo.exe /f

     

    ping -n 200 localhost

    net start IISADMIN

    net start IMAP4Svc

    net start RESvc

    net start SMTPSVC

    ping -n 1000 localhost

    net start IISADMIN

    net start IMAP4Svc

    net start RESvc

    net start SMTPSVC

    taskkill  /im  cmd.exe /f

    taskkill  /im  telnet.exe /f

    **************fim*********************


    MCP, MCDST, MCTS(Forefront, Windows7, Windows2008), MCSA, MCSE, MCT, ITIL (mcsamcse.blogspot.com)
    terça-feira, 8 de dezembro de 2009 17:10