Her X dakikada bir ping işlemi yapabilir ve yanıt süresini nasıl kontrol edebilirim?


26

Şu anda büyük bir şirkette çalışıyorum ve ciddi gecikme sorunlarımız var. Bu, bir proses kontrol sisteminde oluyor ve kabul edilemez. (Bir valfi açın, bazen komut başlamadan 2 dakika önce alın)

Ağ ekibinin "ağda her şey yolunda" olduğunu söylediğinde iki kez kontrol etmek istiyorum. Bu yüzden, sunucuya ping atan ve sonucu bir metin dosyasına yazan bir döngü oluşturmak istiyorum.

Toplu iş uzmanı değilim, ancak bu kodun kullanımının doğru olduğunu düşünüyor musunuz?

@ECHO OFF

:LOOPSTART

time /T
ping xxx.xx.x.x  -t >> filename.txt
sleep -m 3000

GOTO LOOPSTART


@Zoredache Proses kontrol bilgisayarına bu tür yazılımları kuramıyorum
Waza_Be

"XP Professional kazanmak" DOS değil.
Grawity

Yanıtlar:


31

Bana iyi gözüküyor, ancak IP'ye sürekli olarak ping atmak istiyorsanız onu ilmeklemeye gerek yok. Sonra basitçe bu şekilde yapabilirsin:

@ECHO OFF
set IPADDRESS=x.x.x.x
ping %IPADDRESS% -t >> filename.txt

Her X dakikada bir ping yapmak istiyorsanız, döngüyü kullanın:

@ECHO OFF
set IPADDRESS=x.x.x.x
set INTERVAL=60
:PINGINTERVAL
ping %IPADDRESS% -n 1 >> filename.txt
timeout %INTERVAL%
GOTO PINGINTERVAL

Gördüğünüz gibi sleepkomutu ile değiştirdim timeout. Çünkü sleepbazı sistemlerde her zaman mevcut değildir, oysa timeoutgenellikle.

Sisteminizde eksik sleepveya timeoutkomutlar? Üzülme. Sadece timeoutaşağıdaki kesmekle değiştirin :

@ping 127.0.0.1 -n %INTERVAL% > nul

Bu hack basitçe yerel adresinize ping gönderir ve anında yanıt vereceğinden , yürütmede gecikme öykünmek için bunu kullanabiliriz .


zaman aşımı, dahili veya harici bir komut olarak tanınmadı
Waza_Be

@ Profete162, o zaman uyku komutu var mı? Eğer öyleyse, sadece değiştirmek timeoutile sleep. Bunu hangi Windows sürümünde yapıyorsunuz?
mekwall

Uyku için aynı ... Win XP Professional kullanıyorum
Waza_Be 11:11

1
@ Profete162, eski okul! :) Bu komutlar eksik olduğunda kullanabileceğiniz ikincil bir yöntem ekleyeceğim.
mekwall

3

Tek astarlı bir çözüm için aşağıdakileri kullanın:

cmd /v /c "(for /l %a in () do @for /f "tokens=*" %b in ('ping -w 1000 -n 1 xxx.xxx.xxx.xxx ^| findstr "Reply Request Unknown Destination"') do @echo !DATE! !TIME! %b & timeout 3000 >NUL) > pingtestresults.txt"

NB:

  1. xxx.xxx.xxx.xxxile değiştirebilirsinizgoogle.com
  2. aralığı değiştirmek için 3000- 60(1 dakika) veya 10 (10 saniye)
  3. Bu komutu toplu iş dosyasına (.bat veya .cmd) koymanız gerekirse, %bununla değiştirdiğinizden emin olun.%%

1

Bir Windows çözümü için, wtee.exe'yi kurmak istiyorsanız , aşağıdakiler işe yarayacaktır ( pingloop.bat ):

@echo off
SETLOCAL

set pingTarget=yahoo.com
set fileName=pinglog.txt
set waitSeconds=420

echo. | wtee -a %fileName%
echo ====================================================== | wtee -a %fileName%
echo Starting Ping Loop; Logging to %fileName% | wtee -a %fileName%

:timestamp
set day=%date:~7,2%
set month=%date:~4,2%
set year=%date:~10,4%

set timestamp=%year%-%month%-%day%_%time%
echo. | wtee -a %fileName%
echo ------------------------------------------------------ | wtee -a %fileName%
echo Ping Timestamp: %timestamp% | wtee -a %fileName%

:ping
ping %pingTarget% -n 1 | wtee -a %fileName%

:wait
ping 127.0.0.1 -n %waitSeconds% > nul

goto timestamp

ENDLOCAL

Şerefe!


0

Windows sorusu olduğunu biliyorum (ve bu konuda eski bir soru), ama belki de Linux ve OSX'e benzer. Bu, dizüstü bilgisayarımda ağ trafiğini tutmak için basit bir komut ararken ilk çıkan şey. Benzer bir şey arayan biri için faydalı olabilir.

bir bash betiğinde:

WAITSECONDS=30 #or whatever your needs are
IPTOPING=8.8.8.8 #or whatever your needs are
ping -i ${WAITSECONDS} ${IPTOPING} > logfile

Her 30 saniyede bir ping ping google dns:

ping -i 30 8.8.8.8 > logfile

OSX ve Linux'ta çalışır, yine de oldukça standart olmalı, hangi sistemde olduğunuzu bilmiyorum.


1
belki cygwin .. cygwin Windows'ta bash kullanmanıza izin verir
barlop

0

zaman aşımı anahtarı, aradığınız şey ile 'bekle' düğmesiyle aynı değildir. Windows ping komutuna sahip zaman aşımı anahtarı, komut penceresine NEXT cevabını göndermeden önce ne kadar bekleyeceğini değil, cevabı ALMADAN önce ne kadar bekleyeceğini söyler.


1
Süper Kullanıcıya Hoşgeldiniz! Bu gerçekten bir yorum ve asıl sorunun cevabı değil . Bir yazarın açıklamasını eleştirmek veya talep etmek için, yazdıklarının altında bir yorum bırakın; istediğiniz zaman kendi yazılarınıza yorum yapabilirsiniz ve yeterli saygınlık elde ettiğinizde , herhangi bir yayına yorum yazabilirsiniz . Lütfen okuyun Neden yorum yapmak için 50 itibara ihtiyacım var? Bunun yerine ne yapabilirim?
DavidPostill

0

Soru tam olarak belli değil. Görünüşe göre sürekli döngüde bir dosyaya ekleyen bir toplu iş dosyasında kullanım yok. Özellikle de bu toplu iş dosyası, tekrarlanan bir dış olay tarafından başlatıldığında ... disk alanını doldurmak istemediğiniz sürece veya tonlarca komut istemi başlatıp sistemi boğmadığınız sürece ...

Benim varsayım, test için bir süre olmalı ve sonra parti sona ermelidir. Ayrıca bugün MS Windows’un çoğunun Powershell ile donatıldığını ve bu durum için faydalı olabileceklerini de varsayıyorum. İşte twoliner:

powershell "get-date | out-file <log filename>"
powershell "test-connection <IP> -delay <interval> -count <how many pings> | out-file -append <log filename>"

Bu bir toplu iş dosyasına konabilir veya bir powershell betiği olarak çalıştırılabilir, bu durumda 'powershell'i ve çift tırnak işareti kaldırın.

Yine de, Windows'ta bash en iyi seçenek gibi görünüyor ...


0

Yukarıdaki Sparks cevabını genişleterek, bir satır kodunu bazı değişikliklerle birlikte bir toplu iş dosyasına koydum.

cmd /v /c "(for /l %%a in () do @for /f "tokens=*" %%b in ('ping -w 1000 -n 1 %1 ^| 
findstr "Reply Request Unknown Destination"') do @echo !DATE! !TIME! %%b & timeout %2 
>NUL) > pingtestresults.txt"

PingD.bat olarak kaydedildi PingD [makine adı / IP] [saniye cinsinden pingler arasında gecikme] yapmak için aşağıdakileri kullanın.

Örneğin, PingD MyDC01 10 , her 10 saniyede bir MyDC01'e ping gönderecektir.


0

Sadece pencerelerdeki bir komut penceresine yapıştırmak istiyorsanız ...

(/ l% a in () için @ / / f "tokens = *"% b in ('ping -w 1000 -n 1 8.8.8.8 ^ | findstr "Cevap İsteği Hedefini Seçme"') do @ echo% b & zaman aşımı 3> NUL)

Her 3 saniyede bir ping ... durdurana kadar

Bu daha iyidir, çünkü bir günlük dosyasına (neden gerçekten bir günlük dosyasına ihtiyaç duyarsınız) hemen bir pencereye yazmak zorunda kalmazsınız ve size istenen sonuçları "derhal" verir :)

Bazı nedenlerden dolayı, bunu yaparak log dosyasına da yapabilirsiniz: (/ l% a in () için @ / / f "tokens = *"% b in ('ping -w 1000 -n 1 8.8. 8.8 ^ | findstr "Cevap Bilinmeyen Hedef İste" ") do @echo% b & timeout 3> NUL)> file.txt

Ayrıca, zaman aşımını, bu durumda olduğu gibi 3 saniye sonra 'zaman aşımından' sonra gelen değeri değiştirerek ayarlayabilirsiniz ...

Ve bir toplu iş dosyasına kaydetmeniz gerekmez ... Bu metin dizesini, kaydedilmiş bir bulut konumunda saklanan bu metin dizisine kopyalayıp yapıştırın .. veya kullanmak istediğiniz komut klasörünü kopyalayın ve yapıştırın.


Bu sorunun zaten birkaç cevabı var, lütfen cevabınızın nasıl daha iyi / farklı olduğunu açıklayın.
Máté Juhász

-1

Windows tabanlı sistemlerde, belirli bir aralıktan sonra bir sunucuya ping yapmak için aşağıdaki komutu kullanabiliriz

ping xxx.xxx.xxx.xxx -wxxxx -n xx >> c: \ logfile.txt

-w, milisaniye cinsinden aralıkları belirtir; bu nedenle, 3 saniye boyunca 1000 ~ 1 saniye => 3000, -n, ping'in, xxx.xxx.xxx.xxx adresindeki sunucuya sorgu göndereceği sayıyı belirtir.


15
-w sadece bir cevap için ne kadar bekleyeceğini, ping için ne kadar bekleyeceğini belirtir.
Şeytanın Avukatı,

-1

Bu, belirli bir IP’yi belirli bir aralıkta pinglemek için kullandığım windows komutudur (bu örnekte 10 saniye):

ping -t <ip.address> -w 10000

- sürekli ping diyor.

-w sonraki pingden önce bu kadar bekle diyor. İşte 1 dakikalık bekleme örneği:

ping -t <ip.address> -w 60000

Zevk ve iyi şanslar !!


Soru bilgiyi bir dosyaya nasıl yazacağımı sordu. Bunu başarmak için cevabınızı düzenleyebilir misiniz?
Ben N

16
Windows'ta, pingler arasındaki-w süreyi değil, bir "ping" kaybını dikkate almadan önce beklenecek maksimum süreyi belirtir .
wersimmon
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.