Wie kann ich alle X Minuten einen Ping durchführen und die Antwortzeit überprüfen?

Ich arbeite derzeit in einem großen Unternehmen und wir haben ernsthafte Latenzprobleme. Dies geschieht in einem Prozessleitsystem und ist nicht akzeptabel (Öffnen eines Ventils dauert manchmal 2 Minuten vor dem Start des Befehls)

Ich möchte überprüfen, wann das Netzwerkteam sagt"alles ist in Ordnung im Netzwerk". Ich möchte also eine Schleife erstellen, die den Server anpingt und das Ergebnis in eine Textdatei schreibt.

Ich bin kein Batch-Experte, aber denken Sie, dass dieser Code korrekt ist verwenden?

@ECHO OFF

:LOOPSTART

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

GOTO LOOPSTART
Author: fixer1234, 2011-10-11

11 answers

Sieht für mich gut aus, aber Sie müssen es nicht schleifen, wenn Sie die IP kontinuierlich pingen möchten. Dann könnten Sie es einfach so machen:

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

Wenn Sie jede X Minute pingen möchten, verwenden Sie die Schleife:

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

Wie Sie sehen, habe ich den Befehl sleep durch timeout ersetzt. Das liegt daran, dass sleep auf einigen Systemen nicht immer verfügbar ist, während timeout normalerweise ist.

Fehlende sleep oder timeout Befehle auf Ihrem System? Ärgere dich nicht. Ersetzen Sie einfach timeout durch Folgendes hack:

@ping 127.0.0.1 -n %INTERVAL% > nul

Dieser Hack pingt einfach Ihre lokale Adresse, und da er sofort reagiert, können wir damit emulieren eine Verzögerung bei der Ausführung.

 35
Author: mekwall,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-08-11 10:20:45

Verwenden Sie für eine einzeilige Lösung Folgendes:

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"

Hinweis:

  1. Sie können xxx.xxx.xxx.xxx durch google.com
  2. um das Intervall zu bearbeiten, ändern Sie 3000 in 60 (für 1 Minute) oder 10 (für 10 Sekunden)
  3. wenn Sie diesen Befehl in die Batchdatei einfügen müssen (.fledermaus oder .cmd), stellen Sie dann sicher, dass Sie % durch %%
 3
Author: sparks,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-11-21 01:41:44

Für eine Windows-Lösung, wenn Sie bereit sind, wtee zu installieren.exe, das Folgende funktioniert (pingloop.fledermaus):

@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

Cheers!

 1
Author: Sean Vikoren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-10-11 23:25:54

Wenn Sie es einfach in ein Befehlsfenster unter Windows einfügen möchten...

(for /l %a in () do @for / f "Token=*" %b in ('ping-w 1000-n 1 8.8.8.8 ^ / findstr "Antwortanfrage Unbekanntes Ziel"') do @echo %b & timeout 3 >NUL)

Es Ping ist alle 3 Sekunden... bis Sie es stoppen

Dies ist besser, weil Sie nicht in eine Protokolldatei schreiben müssen (warum würden Sie wirklich eine Protokolldatei benötigen), sondern nur in das Sofortfenster und Sie erhalten "sofort" die gewünschten Ergebnisse" :)

Wenn Sie aus irgendeinem Grund auch in die Protokolldatei leiten können, indem Sie dies tun: (for / l %a in () do @for / f "Token=*" %b in ('ping-w 1000-n 1 8.8.8.8 ^| findstr "Antwortanfrage Unbekanntes Ziel"') do @echo %b & timeout 3 >NUL)>Datei.txt

Außerdem können Sie das Timeout anpassen, indem Sie den Wert nach 'Timeout' wie in diesem Fall 3 Sekunden ändern...

Und Sie müssen nicht in einer Batch-Datei speichern... Kopieren Sie einfach diese Textzeichenfolge aus diesem in einer gespeicherten Cloud gespeicherten Text und fügen Sie sie ein Lage.. oder Ordner mit Befehlen, die Sie verwenden möchten.. etc..

 1
Author: CA Martin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-10-30 10:14:11

Ich weiß, es ist eine Windows-Frage (und eine alte), aber vielleicht ähnelt sie Linux und OSX. Dies ist das erste, was auftauchte, als ich nach einem einfachen Befehl suchte, um den Netzwerkverkehr auf meinem Laptop zu halten. Könnte für jemanden nützlich sein, der nach etwas Ähnlichem sucht.

In einem bash-Skript:

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

Einzelne Zeile ex Ping Google dns alle 30sec:

ping -i 30 8.8.8.8 > logfile

Funktioniert unter OSX und Linux, sollte jedoch ziemlich Standard sein, weiß nicht, auf welchem System Sie sich befinden.

 0
Author: Robert Heath,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-07-18 07:40:19

Der Timeout-Schalter entspricht nicht dem, wonach Sie als 'Wait' - Schalter suchen. Der Timeout-Schalter mit dem Windows-Ping-Befehl teilt dem Befehlsfenster einfach mit, wie lange vor dem Empfang der Antwort gewartet werden soll, und nicht wie lange vor dem Senden der NÄCHSTEN Antwort.

 0
Author: james,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-06-24 16:08:41

Die Frage ist nicht ganz klar. Anscheinend gibt es keine Verwendung in einer kontinuierlichen Schleife in einer Batchdatei, die an eine Datei angehängt wird. Besonders wenn diese Batchdatei von einem sich wiederholenden externen Ereignis gestartet wird... es sei denn, Sie möchten den Speicherplatz füllen... oder um Tonnen von Eingabeaufforderungen zu initiieren und das System zu ersticken...

Meine Annahme ist, dass es einige Zeit zum Testen geben sollte und dann sollte der Stapel enden. Ich gehe auch davon aus, dass heute die meisten MS Windows mit Powershell ausgestattet sind, die könnte für diesen Fall nützlich werden. Hier ist der twoliner:

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

Dies kann in einer Batch-Datei gestellt werden, oder als Powershell-Skript ausführen, in diesem Fall entfernen 'Powershell' und die doppelten Anführungszeichen.

Dennoch scheint Bash unter Windows die beste Option zu sein...

 0
Author: dmitry,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-01-13 17:25:07

Erweitert um die Antwort von Sparks oben, habe ich seinen einzeiligen Code in eine Batch-Datei mit einigen Änderungen eingefügt.

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"

Als PingD gespeichert.bitte verwenden Sie Folgendes, um PingD [Maschinenname/IP] [Verzögerung zwischen Pings in Sekunden]

Z. B. PingD MyDC01 10 sendet alle 10 Sekunden einen Ping an MyDC01.

 0
Author: James Tew,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-03-08 10:08:28

Ich musste messen, wie stabil meine Internetverbindung war und wollte nicht jede Sekunde pingen. Also habe ich diese Batch-Datei geschrieben, um die Ping-Statistiken zu verfolgen, während ich zwischen jedem Ping länger warte. Während timeout warten x seconds, drücken Sie eine beliebige Taste (z.B. Leertaste), um sofort eine Schleife.

@echo off
if "%1"=="" goto help

setlocal ENABLEDELAYEDEXPANSION

set ip=%1
set timeout=%2
set cnt=0
set cntLost=0
set total=0
set min=100000
set max=0

:loop
for /f "tokens=4 delims==" %%i in ('ping -n 1 !ip!^|findstr "100% Average"') do (
  set /a cnt+=1
  set ms=%%i
  set ms=!ms:~0,-2!
  set ms=!ms: =!
  set loss=!ms:~-4!
  if "!loss!" equ "loss" (set lost=1) else (set lost=0)
  if !lost! equ 1 (
    set /a cntLost+=1
    set ms=--
  ) else (
    set /a total+=!ms!
    set /a avg=!total!/!cnt!
    if !ms! lss !min! set min=!ms!
    if !ms! gtr !max! set max=!ms!
  )
  set /a pLost=!cntLost! * 100 / !cnt!
  set msg=time=!ms!ms; Min=!min!ms, Max=!max!ms, Avg=!avg!ms, Total=!cnt!, Lost=!cntLost! ^(!pLost!%%^)
  title !msg!
  echo Reply from !ip!: !msg!
)
timeout /t !timeout!>nul
goto loop

:help
echo.
echo %0
echo.
echo Usage: %0 ip_address wait_between_pings
echo.

:TheEnd
endlocal

So sieht die Ausgabe aus.

Reply from x.x.x.x: time=17ms; Min=17ms, Max=17ms, Avg=17ms, Total=1, Lost=0 (0%)
Reply from x.x.x.x: time=15ms; Min=15ms, Max=17ms, Avg=16ms, Total=2, Lost=0 (0%)
Reply from x.x.x.x: time=16ms; Min=15ms, Max=17ms, Avg=16ms, Total=3, Lost=0 (0%)
Reply from x.x.x.x: time=15ms; Min=15ms, Max=17ms, Avg=15ms, Total=4, Lost=0 (0%)
Reply from x.x.x.x: time=10ms; Min=10ms, Max=17ms, Avg=14ms, Total=5, Lost=0 (0%)
Reply from x.x.x.x: time=12ms; Min=10ms, Max=17ms, Avg=14ms, Total=6, Lost=0 (0%)
Reply from x.x.x.x: time=18ms; Min=10ms, Max=18ms, Avg=14ms, Total=7, Lost=0 (0%)
Reply from x.x.x.x: time=12ms; Min=10ms, Max=18ms, Avg=14ms, Total=8, Lost=0 (0%)
Reply from x.x.x.x: time=14ms; Min=10ms, Max=18ms, Avg=14ms, Total=9, Lost=0 (0%)

Jetzt kann ich kumulative Statistiken sehen, genau wie ein kontinuierlicher Ping, aber immer noch eine variable Anzahl von Sekunden zwischen jedem Ping warten.

 0
Author: James L.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2020-09-25 05:08:03

Auf Windows-basierten Systemen können wir den folgenden Befehl verwenden, um einen Server nach einem bestimmten Intervall anzupingen

Ping xxx. xxx.xxx. xxx-w xxxx-n xx >> c:\logfile.txt

, Wo - w gibt Intervalle in Millisekunden an, also 1000 ~ 1 Sekunde = > 3000 für 3 Sekunden Verzögerung -n gibt an, wie oft ping unter xxx.xxx.xxx.xxx Abfragen an den Server sendet .

 -1
Author: Praveer Verma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-04-27 17:57:18

Dies ist der Windows-Befehl, mit dem ich eine bestimmte IP in einem bestimmten Intervall (in diesem Beispiel 10 Sekunden) anpingen kann:

ping -t <ip.address> -w 10000

-t sagt ping kontinuierlich.

- w sagt, warte so lange vor dem nächsten Ping. Hier ist ein 1-Minuten-Wartebeispiel:

ping -t <ip.address> -w 60000

Viel Spaß und viel Glück!!

 -1
Author: Software_Programineer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-03-23 13:29:44