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
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.
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:
- Sie können
xxx.xxx.xxx.xxx
durchgoogle.com
- um das Intervall zu bearbeiten, ändern Sie
3000
in60
(für 1 Minute) oder10
(für 10 Sekunden) - wenn Sie diesen Befehl in die Batchdatei einfügen müssen (.fledermaus oder .cmd), stellen Sie dann sicher, dass Sie
%
durch%%
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!
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..
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.
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.
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...
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.
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.
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 .
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!!
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