none
script inteligente RRS feed

  • Pergunta

  • Olá,

    Gostaria de criar um scritp para uma lista de host contido em um arquivo txt e em caso positivo ele executa uma linha de comando utilizando o psexec.

    Mais ou menos assim.

    Estou instalando um software na rede utilizando o comando psexec, até ai eu consegui normalmente, porém aqui temos mais de 100 hosts e não quero ficar efetuando teste de ping em cada uma delas e depois instalar, eu quero um script que efetue um teste de comunicação no caso o ping e em caso positivo é executado o comando psexec e seus argumentos, no caso dos hosts negativo me informar quais são eles.
    segunda-feira, 22 de junho de 2009 16:35

Respostas

  • Olá,

    Segue um exemplo para testar o ping:

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

    Do While nCont < 3
       Set colPings = objWMIService.ExecQuery ("Select * From Win32_PingStatus where Address = '192.168.0.155'")
       For Each objStatus in colPings
           If IsNull(objStatus.StatusCode) _
              or objStatus.StatusCode<>0 Then
           End If
           if nCont = 0 Then
               'AQUI VOCÊ COLOCA O PROGRAMA QUE VOCÊ QUER EXECUTAR
               EnviaMail
               nCont = 0
           End if
       Next
     nCont = nCont + 1
     'EXECUTAR A CADA 1 MINUTO
      wscript.sleep (300)
    Loop

    Faça as adaptações para seu script e poste os resultados.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    segunda-feira, 22 de junho de 2009 18:19

Todas as Respostas

  • Olá,

    Segue exemplo:

    Const ForReading = 1

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    'caminho do arquivo txt
    Set objTextFile = objFSO.OpenTextFile("C:\computadores.txt",ForReading)

    Do While objTextFile.AtEndOfStream <> True
       'aqui é a linha que está lendo
       nome = objTextFile.ReadLine

       'caminho do psexec
       strPsexec = "\\server\compartilhamento\PsTools\psexec.exe"


       'Caminho do arquivo (programa) que irá executar no computador cliente
       strScript =  "\\server\compartilhamento\teste.vbs"

       Set WSHShell = WScript.CreateObject("WScript.Shell")
       WSHShell.Run strPsexec & " \\" & nome & " cscript.exe " & strScript, 2, true


    Loop


    Onde o c:\computadores.txt é o arquivo onde esta os nomes dos computadores.
    O

    Faça os testes e nos retorne.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    segunda-feira, 22 de junho de 2009 17:31
  • Jesiel,

    Na verdade o que eu estou querendo fazer é:


    eu já tenho um script em .bat com a seguinte informação:

    psexec @hosts_remotos -u domain\user -p "senha" msiexec /i "pacote de instação"

    com isso eu já consigo instalar o pacote.msi nas máquinas remotas, e no arquivo hosts_remotos eu tenho listados todos hosts remotos, porém quero saber antes se o host está respondendo para poder assim efetuar o comando psexec.

    algo como:

    ping @lista_com_host_remoto, se tiver resposta adicionar esse host em um outro arquivo chamdo hosts_up e os que não tiverem adiconar no arquivo host_down a partir disso eu pego o arquivo com host_up e uso juntamente com script que crei do psexec.
    segunda-feira, 22 de junho de 2009 18:02
  • Olá,

    Segue um exemplo para testar o ping:

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

    Do While nCont < 3
       Set colPings = objWMIService.ExecQuery ("Select * From Win32_PingStatus where Address = '192.168.0.155'")
       For Each objStatus in colPings
           If IsNull(objStatus.StatusCode) _
              or objStatus.StatusCode<>0 Then
           End If
           if nCont = 0 Then
               'AQUI VOCÊ COLOCA O PROGRAMA QUE VOCÊ QUER EXECUTAR
               EnviaMail
               nCont = 0
           End if
       Next
     nCont = nCont + 1
     'EXECUTAR A CADA 1 MINUTO
      wscript.sleep (300)
    Loop

    Faça as adaptações para seu script e poste os resultados.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    segunda-feira, 22 de junho de 2009 18:19