Atualmente, estou trabalhando em uma grande empresa e temos sérios problemas de latência. Isso está acontecendo em um sistema de controle de processo e é inaceitável (abrir uma válvula às vezes leva 2 minutos antes do início do comando)
Quero verificar novamente quando a equipe da rede disser "está tudo bem na rede". Então, quero criar um loop que faça ping no servidor e grave o resultado em um arquivo de texto.
Não sou especialista em lotes, mas você acha que esse código está correto?
@ECHO OFF
:LOOPSTART
time /T
ping xxx.xx.x.x -t >> filename.txt
sleep -m 3000
GOTO LOOPSTART
windows
batch-file
ping
infinite-loop
Waza_Be
fonte
fonte
Respostas:
Parece bom para mim, mas não há necessidade de fazer um loop se você deseja executar ping continuamente no IP. Então você poderia simplesmente fazer assim:
Se você deseja executar ping a cada X minuto, use o loop:
Como você pode ver, substituí o
sleep
comando portimeout
. Issosleep
ocorre porque nem sempre está disponível em alguns sistemas, enquantotimeout
normalmente está.Faltam
sleep
outimeout
comandos no seu sistema? Não se preocupe. Apenas substituatimeout
pelo seguinte corte:Esse hack simplesmente envia um ping para o seu endereço local e, como ele responde instantaneamente, podemos usá-lo para simular um atraso na execução.
fonte
timeout
porsleep
. Qual versão do Windows você está fazendo isso?Para uma solução de uma linha, use o seguinte:
NB:
xxx.xxx.xxx.xxx
porgoogle.com
3000
para60
(por 1 minuto) ou10
(por 10 segundos)%
por%%
fonte
Para uma solução do Windows, se você deseja instalar o wtee.exe , o seguinte funcionará ( pingloop.bat ):
Felicidades!
fonte
Eu sei que é uma pergunta do Windows (e antiga), mas talvez seja semelhante ao Linux e OSX. Essa é a primeira coisa que surgiu quando eu estava procurando por um comando simples para manter o tráfego de rede no meu laptop. Pode ser útil para quem procura algo semelhante.
em um script bash:
Única linha ex ping do Google DNS a cada 30 segundos:
Funciona em OSX e Linux, mas deve ser bastante padrão, não sei em que sistema você está.
fonte
o interruptor de tempo limite não é o mesmo que você procura como um interruptor de 'espera'. A opção de tempo limite com o comando ping do Windows simplesmente informa à janela de comando quanto tempo esperar antes de RECEBER a resposta, não quanto tempo esperar antes de enviar a resposta SEGUINTE.
fonte
A questão não é clara. Aparentemente, não há uso em loop contínuo em um arquivo em lotes anexado a um arquivo. Especialmente quando esse arquivo em lote é iniciado por um evento externo repetido ... a menos que você queira preencher o espaço em disco ... ou iniciar toneladas de prompts de comando e bloquear o sistema ...
Minha suposição é que deve haver algum período para o teste e o lote deve terminar. Suponho também que hoje a maior parte do MS Windows esteja equipada com o Powershell, o que pode se tornar útil para este caso. Aqui está o twoliner:
Isso pode ser colocado em um arquivo em lotes ou executado como um script do PowerShell; nesse caso, remova 'PowerShell' e as aspas duplas.
Ainda assim, o bash no Windows parece ser a melhor opção ...
fonte
expandindo a resposta de Sparks acima, coloquei o código de uma linha dele em um arquivo em lotes com algumas modificações.
salvo como PingD.bat, use o seguinte para executar o PingD [nome da máquina / IP] [atraso entre pings em segundos]
por exemplo, PingD MyDC01 10 envia um ping para MyDC01 a cada 10 segundos.
fonte
Se você quiser apenas colá-lo em uma janela de comando no Windows ...
(para / l% a em () do @for / f "tokens = *"% b in ('ping -w 1000 -n 1 8.8.8.8 ^ | findstr "Resposta de solicitação de destino desconhecido"') do @echo% b e tempo limite 3> NUL)
Ele faz ping a cada 3 segundos ... até você parar
Isso é melhor porque você não precisa gravar em um arquivo de log (por que você realmente precisaria de um arquivo de log) apenas na janela imediata e fornece os resultados desejados "imediatamente" :)
Se, por algum motivo, você também pode canalizar para o arquivo de log, faça o seguinte: (para / l% a in () do @for / f "tokens = *"% b in ('ping -w 1000 -n 1 8.8. 8.8 ^ | findstr "Resposta desconhecida da solicitação de resposta" ') do @echo% b & timeout 3> NUL)> file.txt
Além disso, você pode ajustar o tempo limite alterando o valor após 'tempo limite', pois neste caso são 3 segundos ...
E você não precisa salvar em um arquivo em lotes ... Basta copiar e colar esta sequência de texto deste texto armazenada em um local salvo na nuvem .. ou na pasta de comandos que você deseja usar .. etc.
fonte
Em sistemas baseados no Windows, podemos usar o seguinte comando para executar ping em um servidor após um intervalo específico
ping xxx.xxx.xxx.xxx -w xxxx -n xx >> c: \ logfile.txt
onde -w especifica intervalos em milissegundos, de modo que 1000 ~ 1 segundo => 3000 por 3 segundos de atraso - n especifica o número de vezes que o ping enviará consulta ao servidor em xxx.xxx.xxx.xxx.
fonte
Este é o comando do Windows que eu uso para executar ping em um IP específico em um intervalo especificado (10 segundos neste exemplo):
-t diz ping continuamente.
-w diz espera tanto tempo antes do próximo ping. Aqui está um exemplo de espera de 1 minuto:
Aproveite e boa sorte!
fonte
-w
especifica o tempo máximo de espera antes de considerar um ping "perdido", não o tempo entre pings.