Obecnie pracuję w dużej firmie i mamy poważne problemy z opóźnieniami. Dzieje się tak w systemie sterowania procesem i jest niedopuszczalne (czasami otwieranie zaworu zajmuje 2 minuty przed uruchomieniem polecenia)
Chcę dokładnie sprawdzić, kiedy zespół sieci mówi „wszystko w sieci jest w porządku”. Chcę utworzyć pętlę, która wysyła ping do serwera i zapisuje wynik w pliku tekstowym.
Nie jestem ekspertem wsadowym, ale czy uważasz, że ten kod jest poprawny w użyciu?
@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
źródło
źródło
Odpowiedzi:
Dla mnie wygląda dobrze, ale nie ma potrzeby zapętlania go, jeśli chcesz ciągle pingować adres IP. Następnie możesz po prostu zrobić to w ten sposób:
Jeśli chcesz pingować co X minut, użyj pętli:
Jak widać zastąpiłem
sleep
polecenietimeout
. Jest tak, ponieważsleep
nie zawsze jest dostępne w niektórych systemach, podczas gdytimeout
zwykle jest.Brakuje
sleep
lubtimeout
komendy w twoim systemie? Nie martw się. Po prostu zamieńtimeout
na następujący hack:Ten hack po prostu wysyła ping do twojego lokalnego adresu, a ponieważ zareaguje natychmiast, możemy to wykorzystać do emulacji opóźnienia w wykonaniu.
źródło
timeout
sięsleep
. W jakiej wersji systemu Windows to robisz?W przypadku rozwiązania jednowarstwowego użyj:
NB:
xxx.xxx.xxx.xxx
zgoogle.com
3000
do60
(na 1 minutę) lub10
(10 sekund)%
je%%
źródło
W przypadku systemu Windows, jeśli chcesz zainstalować wtee.exe , będą działać następujące polecenia ( pingloop.bat ):
Twoje zdrowie!
źródło
Wiem, że to pytanie Windows (i to stare), ale może jest podobne do Linuksa i OSX. To pierwsza rzecz, która pojawiła się, gdy szukałem prostego polecenia, aby utrzymać ruch sieciowy na moim laptopie. Może być przydatny dla kogoś, kto szuka czegoś podobnego.
w skrypcie bash:
Pojedyncza linia ex ping ping google dns co 30 sekund:
Działa w OSX i Linux, choć powinien być dość standardowy, nie wiem na jakim systemie się używasz.
źródło
przełącznik limitu czasu nie jest tym samym, co szukasz jako przełącznika „oczekiwania”. Przełącznik limitu czasu z poleceniem ping systemu Windows po prostu informuje okno poleceń, jak długo należy czekać przed OTRZYMANIEM odpowiedzi, a nie jak długo czekać przed wysłaniem NEXT.
źródło
Pytanie nie jest do końca jasne. Najwyraźniej nie ma zastosowania w ciągłej pętli w pliku wsadowym dołączanym do pliku. Zwłaszcza gdy ten plik wsadowy jest uruchamiany przez powtarzające się zdarzenie zewnętrzne ... chyba że chcesz zapełnić miejsce na dysku ... lub zainicjować masę poleceń i dusić system ...
Zakładam, że powinien upłynąć trochę czasu na testowanie, a następnie partia powinna się zakończyć. Zakładam również, że dziś większość MS Windows jest wyposażona w PowerShell, który może się przydać w tym przypadku. Oto twoliner:
Można to umieścić w pliku wsadowym lub uruchomić jako skrypt PowerShell, w tym przypadku usuń „PowerShell” i podwójne cudzysłowy.
Mimo to bash w systemie Windows wydaje się najlepszą opcją ...
źródło
rozwijając odpowiedź Sparks powyżej, umieściłem jego jeden wiersz kodu w pliku wsadowym z pewnymi modyfikacjami.
zapisane jako PingD.bat użyj następującego polecenia, aby wykonać PingD [nazwa komputera / IP] [opóźnienie między pingami w sekundach]
np. PingD MyDC01 10 będzie wysyłać polecenie ping do MyDC01 co 10 sekund.
źródło
Jeśli chcesz po prostu wkleić go do okna poleceń w systemie Windows ...
(for / l% a in () do @for / f "tokeny = *"% b in ('ping -w 1000 -n 1 8.8.8.8 ^ | findstr "Żądanie odpowiedzi Nieznane miejsce docelowe"') do @echo% b i limit czasu 3> NUL)
Pinguje co 3 sekundy ... dopóki go nie zatrzymasz
Jest to lepsze, ponieważ nie musisz zapisywać do pliku dziennika (dlaczego tak naprawdę potrzebujesz pliku dziennika) tylko do bezpośredniego okna i daje on pożądane wyniki „natychmiast” :)
Jeśli z jakiegoś powodu możesz również wyrzucić do pliku dziennika, wykonując następujące czynności: (for / l% a in () do @for / f "tokens = *"% b in ('ping -w 1000 -n 1 8.8. 8,8 ^ | findstr „Żądanie odpowiedzi Nieznane miejsce docelowe” ') do @echo% b & timeout 3> NUL)> file.txt
Możesz także dostosować limit czasu, zmieniając wartość po limicie czasu, tak jak w tym przypadku 3 sekundy ...
I nie musisz zapisywać do pliku wsadowego ... Wystarczy skopiować i wkleić ten ciąg tekstowy z tego tekstu przechowywanego w zapisanej lokalizacji w chmurze .. lub w folderze poleceń, których chcesz użyć ... itd.
źródło
W systemach Windows możemy użyć następującego polecenia, aby pingować serwer po określonym czasie
ping xxx.xxx.xxx.xxx -w xxxx -n xx >> c: \ logfile.txt
gdzie -w określa interwały w milisekundach, więc 1000 ~ 1 sekunda => 3000 dla 3-sekundowego opóźnienia -n określa, ile razy ping będzie wysyłał zapytanie do serwera o xxx.xxx.xxx.xxx.
źródło
Oto polecenie systemu Windows, którego używam do pingowania określonego adresu IP w określonych odstępach czasu (w tym przykładzie 10 sekund):
-t mówi ciągle ping.
-w mówi, że poczekaj tak długo przed następnym pingiem. Oto przykład 1 minuty oczekiwania:
Życzymy powodzenia !!
źródło
-w
określa maksymalny czas oczekiwania przed uznaniem ping za „utracony”, a nie czas między pingami.