Saat ini saya bekerja di perusahaan besar dan kami memiliki masalah latensi yang serius. Ini terjadi dalam sistem kontrol proses, dan tidak dapat diterima (Buka katup kadang-kadang membutuhkan waktu 2 menit sebelum perintah dimulai)
Saya ingin memeriksa ulang ketika tim jaringan mengatakan "semuanya baik-baik saja di jaringan". Jadi, saya ingin membuat loop yang ping server dan menulis hasilnya dalam file teks.
Saya bukan pakar batch, tetapi apakah Anda pikir kode ini benar untuk digunakan?
@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
sumber
sumber
Jawaban:
Terlihat bagus untuk saya, tetapi tidak perlu mengulanginya jika Anda ingin terus-menerus melakukan ping IP. Maka Anda bisa melakukannya seperti ini:
Jika Anda ingin melakukan ping setiap X menit, gunakan loop:
Seperti yang Anda lihat, saya mengganti
sleep
perintah dengantimeout
. Itu karenasleep
tidak selalu tersedia pada beberapa sistem sedangkantimeout
biasanya.Tidak ada
sleep
atautimeout
perintah pada sistem Anda? Jangan khawatir. Cukup gantitimeout
dengan retasan berikut:Peretasan ini hanya mem-ping alamat lokal Anda, dan karena itu akan merespons secara instan, kami dapat menggunakannya untuk meniru keterlambatan dalam eksekusi.
sumber
timeout
dengansleep
. Versi Windows apa yang Anda lakukan ini?Untuk solusi satu-liner gunakan yang berikut ini:
NB:
xxx.xxx.xxx.xxx
dengangoogle.com
3000
ke60
(selama 1 menit) atau10
(selama 10 detik)%
dengan%%
sumber
Untuk solusi Windows, jika Anda ingin menginstal wtee.exe , yang berikut ini akan berfungsi ( pingloop.bat ):
Tepuk tangan!
sumber
Saya tahu ini adalah pertanyaan windows (dan yang lama), tapi mungkin mirip dengan Linux dan OSX. Ini adalah hal pertama yang muncul ketika saya sedang mencari perintah sederhana untuk menjaga lalu lintas jaringan di laptop saya. Mungkin bermanfaat bagi seseorang yang mencari sesuatu yang serupa.
dalam skrip bash:
Satu baris dari ping google dns setiap 30 detik:
Bekerja di OSX dan Linux, seharusnya cukup standar, tidak tahu sistem apa yang Anda gunakan.
sumber
saklar batas waktu tidak sama dengan apa yang Anda cari sebagai saklar 'tunggu'. Sakelar batas waktu dengan perintah ping Windows hanya memberi tahu jendela perintah berapa lama untuk menunggu sebelum MENERIMA balasan, bukan berapa lama menunggu sebelum mengirim balasan BERIKUTNYA.
sumber
Pertanyaannya tidak begitu jelas. Tampaknya tidak ada penggunaan dalam loop kontinu dalam file batch yang ditambahkan ke file. Terutama ketika file batch ini dimulai dengan peristiwa eksternal berulang ... kecuali jika Anda ingin mengisi ruang disk ... atau untuk memulai banyak perintah meminta dan mencekik sistem ...
Asumsi saya adalah harus ada jangka waktu untuk pengujian dan kemudian batch harus berakhir. Saya juga berasumsi bahwa hari ini sebagian besar MS Windows dilengkapi dengan Powershell, yang mungkin berguna untuk kasus ini. Ini adalah twoliner:
Ini bisa dimasukkan ke dalam file batch, atau dijalankan sebagai skrip PowerShell, dalam hal ini hapus 'PowerShell' dan tanda kutip ganda.
Namun, bash di Windows tampaknya menjadi pilihan terbaik ...
sumber
memperluas jawaban Sparks di atas, saya memasukkan satu baris kode dalam file batch dengan beberapa modifikasi.
disimpan sebagai PingD.bat gunakan yang berikut ini untuk menjalankan PingD [nama mesin / IP] [penundaan antar ping dalam hitungan detik]
mis. PingD MyDC01 10 akan mengirim ping ke MyDC01 setiap 10 detik.
sumber
Jika Anda ingin menempelkannya ke jendela perintah di windows ...
(untuk / l% a in () do @for / f "token = *"% b in ('ping -w 1000 -n 1 8.8.8.8 ^ | findstr "Jawab Permintaan Destinasi Tidak Dikenal"') do @echo% b & batas waktu 3> NUL)
Ini ping setiap 3 detik ... sampai Anda menghentikannya
Ini lebih baik karena Anda tidak perlu menulis ke file log, (mengapa Anda benar-benar membutuhkan file log) hanya ke jendela langsung dan itu memberi Anda hasil yang diinginkan "segera" :)
Jika karena alasan tertentu Anda juga dapat melakukan pipe ke log-file dengan melakukan ini: (untuk / l% a in () do @for / f "token = *"% b in ('ping -w 1000 -n 1 8.8. 8.8 ^ | findstr "Balas Permintaan Destinasi Tidak Dikenal" ') lakukan @echo% b & waktu habis 3> NUL)> file.txt
Anda juga dapat menyesuaikan batas waktu dengan mengubah nilai setelah 'batas waktu' seperti dalam kasus ini 3 detik ...
Dan Anda tidak harus menyimpan ke file batch ... Cukup salin dan tempel string teks ini dari teks ini yang disimpan di lokasi cloud yang disimpan .. atau folder perintah yang ingin Anda gunakan .. dll.
sumber
Pada sistem berbasis Windows kita dapat menggunakan perintah berikut untuk melakukan ping server setelah interval tertentu
ping xxx.xxx.xxx.xxx -w xxxx -n xx >> c: \ logfile.txt
di mana -w menentukan interval dalam milidetik sehingga 1000 ~ 1 detik => 3000 selama 3 detik tunda -n menentukan berapa kali ping akan mengirimkan permintaan ke server di xxx.xxx.xxx.xxx.
sumber
Ini adalah perintah windows yang saya gunakan untuk melakukan ping IP tertentu pada interval yang ditentukan (10 detik dalam contoh ini):
-t kata ping terus menerus.
-w mengatakan tunggu selama ini sebelum ping berikutnya. Berikut adalah contoh menunggu 1 menit:
Nikmati, dan Semoga Sukses !!
sumber
-w
tentukan waktu maksimum untuk menunggu sebelum mempertimbangkan ping "hilang", bukan waktu di antara ping.