BAT ile ping atma ve ms değerini almak

FAT1HIYY3

Decapat
Katılım
23 Ocak 2022
Mesajlar
862
Makaleler
2
Çözümler
6
Daha fazla  
Cinsiyet
Erkek
BAT ile bir DNS adresine örneğin: 1.1.1.1 adresine ping atmak ve bu değerden sadece Ms'yi almak istiyorum.
Normalde ping atınca böyle oluyor:

1686656391094.png


Ben burada ping atma sonrası gelen time='dan sonraki değeri ya da Ping'den tamamen sonra ki average değerini almasını istiyorum bunu Python'ya da normal batch ile yapabilir miyim? (Python'dan kastettiğim Python'da OS modülü)
 
Python OS modülü ile yapma bunu. Linux ve Windows sistemlerde farklı çıktı olması bir yana önerilen bir yöntem hiçbir zaman olmadı ve olmayacak.

OS modülü yerine ping3 modülünü kullanabilirsin. Harici olarak kurmak gerekir. Eğer modül kurmak istemiyorsan socket modülü ile ICMP paketi göndermen, takip etmen, süresini ölçmen ve gerektiği yerde hata verdirtmen gerekiyor.
 
Son düzenleme:
Python OS modülü ile yapma bunu. Linux ve Windows sistemlerde farklı çıktı olması bir yana önerilen bir yöntem hiçbir zaman olmadı ve olmayacak.

OS modülü olmadan ping atmaya yardım lazım mı?

BAT ile de olur hocam. Ping atmayı biliyorum fakat o Ping'den sadece Ms'yi çekmek istiyorum.
 
Terminalde sadece ms değeri mi gözüksün istiyorsun?

Bu arada mesajı düzenlemiştim de sanırım Python ile alakası yok şu an işin.

Bu arada hocam buldum sanırım:

Bash:
SET ms= Hata.
FOR /F "tokens=4 delims==" %%i IN ('ping.exe -n 1 %1 ^| FIND "ms"') DO SET ms=%%i
GOTO:EOF

:setESC
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
 set ESC=%%b
 exit /B 0
)
exit /B 0

Fakat diyelim DNS adreslerinden birisi 14ms diğeri 15ms sonuncusu da 25ms. Bunlardan en küçük ms değerine (14ms) sahip olanı nasıl bulabilirim? Yani değerleri ölçmek istiyorum daha anlaşılır olması için:

1.1.1.1 -- 14ms.
8.8.8.8 -- 25ms.
1.0.0.1 -- 15ms.

Bunlardan en düşük ms değerine sahip olan 1.1.1.1 şimdi ben kodun bunu otomatik ölçmesini ve sonuçta 1.1.1.1 en hızlı DNS adresi yazısını vermesini istiyorum ne kadar aradım ama bulamadım
 
Bu arada hocam buldum sanırım:

Bash:
SET ms= Hata.
FOR /F "tokens=4 delims==" %%i IN ('ping.exe -n 1 %1 ^| FIND "ms"') DO SET ms=%%i
GOTO:EOF

:setESC
for /F "tokens=1,2 delims=#" %%a in ('"prompt #$H#$E# & echo on & for %%b in (1) do rem"') do (
 set ESC=%%b
 exit /B 0
)
exit /B 0

Fakat diyelim DNS adreslerinden birisi 14ms diğeri 15ms sonuncusu da 25ms. Bunlardan en küçük ms değerine (14ms) sahip olanı nasıl bulabilirim? Yani değerleri ölçmek istiyorum daha anlaşılır olması için:

1.1.1.1 -- 14ms.
8.8.8.8 -- 25ms.
1.0.0.1 -- 15ms.

Bunlardan en düşük ms değerine sahip olan 1.1.1.1 şimdi ben kodun bunu otomatik ölçmesini ve sonuçta 1.1.1.1 en hızlı DNS adresi yazısını vermesini istiyorum ne kadar aradım ama bulamadım
Bash:
@echo off

setlocal enabledelayedexpansion

set ip1=google.com
set ip2=facebook.com
set ip3=192.168.1.1

set min_ms=999999
set min_ip=

for %%i in (%ip1% %ip2% %ip3%) do (
    echo Ping atılıyor: %%i
    for /F "tokens=5 delims==< " %%j in ('ping -n 1 %%i ^| find "TTL="') do (
        set "ms=%%j"
        set "ms=!ms:~0,-2!"
        if !ms! lss !min_ms! (
            set min_ms=!ms!
            set min_ip=%%i
        )
    )
)

echo Aralarında en az değere sahip sunucu: %min_ip%

pause >nul
 
Bash:
@echo off

setlocal enabledelayedexpansion

set ip1=google.com
set ip2=facebook.com
set ip3=192.168.1.1

set min_ms=999999
set min_ip=

for %%i in (%ip1% %ip2% %ip3%) do (
    echo Ping atılıyor: %%i
    for /F "tokens=5 delims==< " %%j in ('ping -n 1 %%i ^| find "TTL="') do (
        set "ms=%%j"
        set "ms=!ms:~0,-2!"
        if !ms! lss !min_ms! (
            set min_ms=!ms!
            set min_ip=%%i
        )
    )
)

echo Aralarında en az değere sahip sunucu: %min_ip%

pause >nul
Bunun yerine ip adreslerinin tek değişkende saklanması daha uygun olur.
Kod:
@echo off

setlocal enabledelayedexpansion

set ip ="1.1.1.1 1.0.0.1 8.8.8.8"

set min_ms=999999 
set min_ip=

for %%i in (%ip%) do (   
    for /F "tokens=5 delims==< " %%j in ('ping -n 1 %%i ^| find "TTL="') do (
        set "ms=%%j"       
        set "ms=!ms:~0,-2!"
        if !ms! lss !min_ms! (
            set min_ms=!ms!       
            set min_ip=%%i 
        )
     )
)

echo Aralarında en az pingli sunucu %min_ms% ping ile %min_ip%

pause >nul
 

Technopat Haberler

Yeni konular

Geri
Yukarı