Usuário com melhor resposta
script inteligente

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.
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- Marcado como Resposta Fábio JrModerator quarta-feira, 8 de fevereiro de 2012 15:41
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 -
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. -
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- Marcado como Resposta Fábio JrModerator quarta-feira, 8 de fevereiro de 2012 15:41