Ich arbeite derzeit in einem großen Unternehmen und wir haben ernsthafte Latenzprobleme. Dies geschieht in einem Prozessleitsystem und ist nicht akzeptabel. (Das Öffnen eines Ventils kann bis zu 2 Minuten dauern, bevor der Befehl gestartet wird.)
Ich möchte noch einmal überprüfen, ob das Netzwerkteam sagt, dass im Netz alles in Ordnung ist. 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 richtig ist?
@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
quelle
quelle
Antworten:
Sieht für mich gut aus, muss aber nicht wiederholt werden, wenn Sie die IP-Adresse kontinuierlich anpingen möchten. Dann könnten Sie es einfach so machen:
Wenn Sie alle X Minuten einen Ping-Befehl senden möchten, verwenden Sie die folgende Schleife:
Wie Sie sehen, habe ich den
sleep
Befehl durch ersetzttimeout
. Das liegt daran, dasssleep
es auf manchen Systemen nicht immer verfügbar ist, während diestimeout
normalerweise der Fall ist.Fehlende
sleep
odertimeout
Befehle auf Ihrem System? Ärgere dich nicht. Ersetzen Sie einfachtimeout
mit dem folgenden Hack:Dieser Hack pingt einfach Ihre lokale Adresse an und da er sofort reagiert, können wir dies verwenden, um eine Verzögerung bei der Ausführung zu emulieren .
quelle
timeout
mitsleep
. Welche Windows-Version machst du das?Verwenden Sie für eine Ein-Liner-Lösung Folgendes:
NB:
xxx.xxx.xxx.xxx
mitgoogle.com
3000
auf60
(für 1 Minute) oder10
(für 10 Sekunden).%
mit%%
quelle
Wenn Sie bereit sind, wtee.exe für eine Windows-Lösung zu installieren, funktioniert Folgendes ( pingloop.bat ):
Prost!
quelle
Ich weiß, es ist eine Windows-Frage (und eine alte dazu), aber vielleicht ähnelt sie Linux und OSX. Dies war das erste Mal, dass 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:
Einzelne Zeile, die alle 30 Sekunden Google DNS ausgibt:
Funktioniert unter OSX und Linux, sollte aber ziemlich normal sein, weiß nicht, auf welchem System du bist.
quelle
Der Timeout-Schalter stimmt nicht mit dem überein, was Sie als Warte-Schalter suchen. Der Timeout-Schalter mit dem Windows-Ping-Befehl teilt dem Befehlsfenster einfach mit, wie lange gewartet werden muss, bevor die Antwort empfangen wird, und nicht, wie lange gewartet werden muss, bis die nächste Antwort gesendet wird.
quelle
Die Frage ist nicht ganz klar. Offensichtlich gibt es keine Verwendung in Endlosschleifen in einer Batchdatei, die an eine Datei angehängt wird. Insbesondere, wenn diese Batch-Datei durch ein sich wiederholendes externes Ereignis gestartet wird ... es sei denn, Sie möchten den Speicherplatz auf der Festplatte ausfüllen ... oder tonnenweise Eingabeaufforderungen auslösen und das System drosseln ...
Ich gehe davon aus, dass es eine gewisse Zeit zum Testen geben sollte und die Charge dann enden sollte. Ich gehe auch davon aus, dass heute die meisten MS Windows mit Powershell ausgestattet sind, was für diesen Fall nützlich sein könnte. Hier ist der Twoliner:
Dies kann in eine Batch-Datei geschrieben oder als Powershell-Skript ausgeführt werden. Entfernen Sie in diesem Fall 'Powershell' und die doppelten Anführungszeichen.
Trotzdem scheint Bash auf Windows die beste Option zu sein ...
quelle
Um die Antwort von Sparks weiter oben zu erweitern, habe ich seinen einzeiligen Code mit einigen Änderungen in eine Batch-Datei eingefügt.
Als PingD.bat gespeichert. Verwenden Sie Folgendes, um PingD [Computername / IP] [Verzögerung zwischen Pings in Sekunden] auszuführen.
zB PingD MyDC01 10 sendet alle 10 Sekunden einen Ping an MyDC01.
quelle
Wenn Sie es einfach in ein Befehlsfenster unter Windows einfügen möchten ...
(für / l% a in () @for / f "tokens = *"% b in ('ping -w 1000 -n 1 8.8.8.8 ^ | findstr "Unbekanntes Ziel anfordern"') do @echo% b & Timeout 3> NUL)
Es pingt alle 3 Sekunden ... bis Sie aufhören
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 unmittelbare Fenster und es gibt Ihnen die gewünschten Ergebnisse "sofort" :)
Wenn Sie aus irgendeinem Grund auch eine Pipe-Funktion für die Protokolldatei ausführen können: (für / l% a in () do @for / f "tokens = *"% b in ('ping -w 1000 -n 1 8.8. 8.8 ^ | findstr "Unbekanntes Ziel anfordern" ') @echo% b & timeout 3> NUL)> file.txt ausführen
Sie können das Zeitlimit auch anpassen, indem Sie den Wert nach "Zeitlimit" ändern, da dies in diesem Fall 3 Sekunden sind ...
Und Sie müssen nicht in einer Batch-Datei speichern ... Kopieren Sie einfach diese Textzeichenfolge aus diesem Text, der an einem gespeicherten Cloud-Speicherort gespeichert ist, oder einem Ordner mit Befehlen, die Sie verwenden möchten.
quelle
Auf Windows-basierten Systemen können wir den folgenden Befehl verwenden, um einen Server nach einem bestimmten Intervall zu pingen
ping xxx.xxx.xxx.xxx -w xxxx -n xx >> c: \ logfile.txt
Wobei -w Intervalle in Millisekunden angibt, sodass 1000 ~ 1 Sekunde => 3000 für 3 Sekunden Verzögerung. -n angibt, wie oft Ping-Anfragen an den Server unter xxx.xxx.xxx.xxx gesendet werden.
quelle
Dies ist der Windows-Befehl, den ich verwende, um eine bestimmte IP in einem bestimmten Intervall (in diesem Beispiel 10 Sekunden) zu pingen:
-t sagt ununterbrochen ping.
-w sagt, warte so lange, bevor du das nächste Mal pingst. Hier ist ein Beispiel für eine Wartezeit von 1 Minute:
Viel Spaß und viel Glück !!
quelle
-w
die maximale Wartezeit an, bevor ein Ping als "verloren" eingestuft wird, nicht die Zeit zwischen Pings.