Web Site Çalışıyor Mu? Pingleyin...!!!

Programlama ve Script dilleri konusunda bilgi paylaşım alanıdır.
Cevapla
Kullanıcı avatarı
TRWE_2012
Zettabyte1
Zettabyte1
Mesajlar: 15670
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Teşekkür etti: 2742 kez
Teşekkür edildi: 5669 kez

Web Site Çalışıyor Mu? Pingleyin...!!!

Mesaj gönderen TRWE_2012 »

Merhabalar

KOD İÇERİĞİ :

Kod: Tümünü seç

#!/usr/bin/env bash

read -p "Lutfen ip adresi veya host/URL giriniz: " input
if [[ -z "$input" ]]; then
  echo "Hata: IP/host girilmedi."
  exit 1
fi

# remove scheme (http://, https://, ftp://, etc.)
host="${input#*://}"
# remove userinfo if any (user@host)
host="${host##*@}"
# keep only up to first / (remove path and query)
host="${host%%/*}"
# remove optional port (host:port) for IPv4/hostname; keep IPv6 [::1] form intact
if [[ "$host" =~ ^\[.*\]$ ]]; then
  # IPv6 in brackets — leave as is
  :
else
  host="${host%%:*}"
fi

if [[ -z "$host" ]]; then
  echo "Hata: Geçerli host alınamadı."
  exit 1
fi

echo "Ping: $host"
ping -c 4 "$host"
EKRAN GÖRÜNTÜSÜ :
Resim
Kullanıcı avatarı
TRWE_2012
Zettabyte1
Zettabyte1
Mesajlar: 15670
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Teşekkür etti: 2742 kez
Teşekkür edildi: 5669 kez

Ping.sh Versiyon 2 - [Hadi Web Site Vs Web Site Karşılaştırması Yapalım]

Mesaj gönderen TRWE_2012 »

KOD İÇERİĞİ :

Kod: Tümünü seç

#!/usr/bin/env bash

# Ping ve "bağlanma performans yüzdesi" hesaplayan betik
# Performans yüzdesi = (% paket başarı) * (1 - normalleştirilmiş RTT / RTT_ref)
# RTT_ref varsayılan 200 ms (çok yavaş kabul edilen eşik). RTT > RTT_ref => RTT katkısı 0.
# Bu formül: başarı% * RTT_katsayısı ile hem paket kaybını hem gecikmeyi dikkate alır.

read -p "Lutfen ip adresi veya host/URL giriniz: " input
if [[ -z "$input" ]]; then
  echo "Hata: IP/host girilmedi."
  exit 1
fi

# Host'u ayıkla
host="${input#*://}"
host="${host##*@}"
host="${host%%/*}"
if [[ "$host" =~ ^\[.*\]$ ]]; then :; else host="${host%%:*}"; fi
if [[ -z "$host" ]]; then echo "Hata: Geçerli host alınamadı."; exit 1; fi

# Ping ayarları
COUNT=6
RTT_REF=200    # ms; referans RTT (büyük RTT'leri zayıf kabul etmek için)
TIMEOUT=5

# Ping'i çalıştır ve çıktıyı yakala
out=$(ping -c "$COUNT" -W "$TIMEOUT" "$host" 2>&1)
if [[ $? -ne 0 ]] && ! echo "$out" | grep -q "packets transmitted"; then
  echo "$out"
  exit 1
fi

# Paket bilgilerini çek
# Örnek satır: "6 packets transmitted, 6 received, 0% packet loss, time 5009ms"
pkt_line=$(echo "$out" | grep -E "packets transmitted")
sent=$(echo "$pkt_line" | awk '{print $1}')
recv=$(echo "$pkt_line" | awk '{print $4}')
loss_pct=$(echo "$pkt_line" | sed -n 's/.* \([0-9.]\+%\) packet loss.*/\1/p' | tr -d '%')

# RTT bilgilerini çek (varsa)
# Örnek: "rtt min/avg/max/mdev = 0.123/0.456/0.789/0.012 ms"
rtt_line=$(echo "$out" | grep -E "rtt|round-trip")
if [[ -n "$rtt_line" ]]; then
  avg_rtt=$(echo "$rtt_line" | awk -F'=' '{print $2}' | awk -F'/' '{gsub(/ /,"",$2); print $2}')
else
  avg_rtt=""
fi

# Hesaplamalar
if [[ -z "$recv" || -z "$sent" || "$sent" -eq 0 ]]; then
  echo "Paket bilgisi alınamadı."
  exit 1
fi

success_pct=$(awk -v r="$recv" -v s="$sent" 'BEGIN{printf "%.2f", (r/s)*100}')
loss_pct=${loss_pct:-$(awk -v sp="$success_pct" 'BEGIN{printf "%.2f", 100-sp}')}

# RTT katsayısı: avg_rtt yoksa 1 kabul et
if [[ -n "$avg_rtt" ]]; then
  # normalleştirilmiş RTT = min(avg_rtt/RTT_REF, 1)
  rtt_ratio=$(awk -v a="$avg_rtt" -v ref="$RTT_REF" 'BEGIN{r=a/ref; if(r>1) r=1; printf "%.4f", r}')
  rtt_factor=$(awk -v r="$rtt_ratio" 'BEGIN{printf "%.4f", 1-r}')
else
  rtt_factor=1
fi

# Son performans yüzdesi
perf=$(awk -v sp="$success_pct" -v rf="$rtt_factor" 'BEGIN{printf "%.2f", (sp/100)*rf*100}')

# Çıktı
echo "Host: $host"
echo "Gönderilen paket: $sent, Alınan paket: $recv, Paket kaybı: ${loss_pct}%"
if [[ -n "$avg_rtt" ]]; then
  echo "Ortalama RTT: ${avg_rtt} ms (RTT_REF=${RTT_REF} ms)"
else
  echo "RTT bilgisi yok."
fi
echo "Ham başarı yüzdesi: ${success_pct}%"
echo "RTT faktörü: ${rtt_factor}"
echo "Bağlanma performans yüzdesi: ${perf}%"

# İsteğe bağlı: gerçek ping çıktısını göstermek için aşağıyı aktifleştirin
# echo
# echo "$out"
EKRAN GÖRÜNTÜSÜ :
Resim
KOMUT ÇIKTISI :

Kod: Tümünü seç

Dosya: /home/linuxmaster/Masaüstü/ping_v2.0.sh
linuxmaster@notebook-pc:~/Masaüstü$ ./ping_v2.0.sh
Lutfen ip adresi veya host/URL giriniz: https://forum.sordum.net/
Host: forum.sordum.net
Gönderilen paket: 6, Alınan paket: 5, Paket kaybı: 16.6667%
Ortalama RTT: 87.593 ms (RTT_REF=200 ms)
Ham başarı yüzdesi: 83.33%
RTT faktörü: 0.5620
Bağlanma performans yüzdesi: 46.83%
linuxmaster@notebook-pc:~/Masaüstü$ https://www.yazilimadasi.com/
bash: https://www.yazilimadasi.com/: Böyle bir dosya ya da dizin yok
linuxmaster@notebook-pc:~/Masaüstü$ ./ping_v2.0.sh
Lutfen ip adresi veya host/URL giriniz: https://www.yazilimadasi.com/
Host: www.yazilimadasi.com
Gönderilen paket: 6, Alınan paket: 6, Paket kaybı: 0%
Ortalama RTT: 102.064 ms (RTT_REF=200 ms)
Ham başarı yüzdesi: 100.00%
RTT faktörü: 0.4897
Bağlanma performans yüzdesi: 48.97%
linuxmaster@notebook-pc:~/Masaüstü$ 
SONUÇLARIN SÖZEL YORUMLANMASI :

forum.sordum.net

Paket kaybı: %16.67 (6 gönderildi, 5 alındı) — belirgin paket kaybı var
Ortalama RTT: 87.6 ms — gecikme makul/orta seviyede.
Ham başarı: %83.33 — paket bazında başarılı bağlantı oranı.
RTT faktörü: 0.562 — RTT, referans 200 ms’e göre yarıdan iyi ama performansı düşürüyor.
Bağlanma performansı: %46.83 — hem paket kaybı hem RTT göz önüne alındığında kullanıcı gözlüğünden orta-alt seviye.


yazilimadasi.com

Paket kaybı: %0 (6/6) — paket iletiminde sorun görünmüyor.
Ortalama RTT: 102.1 ms — forum’a göre biraz daha yüksek gecikme ancak hâlâ kabul edilebilir.
Ham başarı: %100
RTT faktörü: 0.4897 — RTT referansına göre gecikme performansı azaltıyor.
Bağlanma performansı: %48.97 — paket kaybı yok ama RTT yüzünden performans %50 civarı.


Özetle

yazilimadasi.com: %48.97
forum.sordum.net: %46.83


Yazilimadasi, yaklaşık 2.14 puan (≈4.6%) daha hızlı çıkmıştır.Bunda sordum forum'un phpBB Forum sürümü eski olabilir.Yazılımadası'nın phpBB Forum sürümü dinamik güncelleniyordu.Tabii benim neti'min hızı da önemli. (Turkcell Fırsat Paketi-25600 MB (25GB)- 11,5 MBbps)


NOT :

RTT Faktörü Nedir?

RTT faktörü, ortalama gecikmenin (avg RTT) belirlenen bir referans gecikmeye (RTT_REF) göre normalleştirilip, gecikmenin olumsuz etkisini 0–1 arasında bir katsayıyla ifade eden değerdir.

Betikteki formül:

rtt_ratio = min(avg_RTT / RTT_REF, 1)
RTT_faktörü = 1 − rtt_ratio

Amaç: paket başarı yüzdesini gecikme ile çarparken gecikmenin etkisini azaltmak (daha yüksek RTT ----->>> daha düşük RTT faktörü).

Örnekler (RTT_REF = 200 ms) : [Benim kodlamada sabit aldığım sayısal değer]

avg RTT = 87.593 ms = rtt_ratio ≈ 0.438 = RTT faktörü ≈ 0.562
avg RTT = 102.064 ms = rtt_ratio ≈ 0.510 = RTT faktörü ≈ 0.490

Yani RTT faktörü 1’e yakınsa gecikme iyidir; 0’a yakınsa gecikme çok yüksektir ve performansı ciddi düşürür.


Güle güle kullanın...
Kullanıcı avatarı
TRWE_2012
Zettabyte1
Zettabyte1
Mesajlar: 15670
Kayıt: 25 Eyl 2013, 13:38
cinsiyet: Erkek
Teşekkür etti: 2742 kez
Teşekkür edildi: 5669 kez

Windows11 İçin Olanı [Tercihen PowerShell sürümü v7.0 ve Üstü)

Mesaj gönderen TRWE_2012 »

KOD İÇERİK :

Kod: Tümünü seç

#!/usr/bin/env pwsh
param(
  [string]$InputHost,
  [int]$Count = 6,
  [int]$RttRef = 200
)

if (-not $InputHost) {
  $InputHost = Read-Host "Lutfen ip adresi veya host/URL giriniz"
}
if (-not $InputHost) { Write-Host "IP/host girilmedi."; exit 1 }

# Host değişkeni adı çakışmasın diye $targetHost kullanalım
$targetHost = $InputHost
try {
  $u = [uri]::new($InputHost)
  if ($u.Host) { $targetHost = $u.Host }
} catch {
  $targetHost = $InputHost
}
if ($targetHost -match "^(.*?):\d+$") { $targetHost = $Matches[1] }

try {
  $results = Test-Connection -ComputerName $targetHost -Count $Count -ErrorAction Stop
} catch {
  Write-Host "Ping başarısız veya host bulunamadı: $targetHost"
  exit 1
}

# Normalize et
if ($results -is [System.Array]) {
  $received = ($results | Where-Object { $_ -ne $null }).Count
  $rtts = $results | ForEach-Object { $_.ResponseTime }
} else {
  $received = if ($results) { 1 } else { 0 }
  $rtts = if ($results) { @( $results.ResponseTime ) } else { @() }
}

$sent = $Count
$lossPct = [math]::Round((1 - ($received / $sent)) * 100, 4)
$successPct = [math]::Round(($received / $sent) * 100, 2)

if ($rtts.Count -gt 0) {
  $avgRtt = [math]::Round(($rtts | Measure-Object -Average).Average, 3)
  $rttRatio = [math]::Min($avgRtt / $RttRef, 1)
  $rttFactor = [math]::Round(1 - $rttRatio, 4)
} else {
  $avgRtt = $null
  $rttFactor = 1
}

$perf = [math]::Round(($successPct / 100) * $rttFactor * 100, 2)

"Host: $targetHost"
"Gönderilen paket: $sent, Alınan paket: $received, Paket kaybı: $lossPct`%"
if ($avgRtt) { "Ortalama RTT: $avgRtt ms (RTT_REF=${RttRef} ms)" } else { "RTT bilgisi yok." }
"Ham başarı yüzdesi: $successPct`%"
"RTT faktörü: $rttFactor"
"Bağlanma performans yüzdesi: $perf`%"
EKRAN GÖRÜNTÜSÜ : (Sistem : GNU/Linux Mint 22.2 x64 - Terminal for PowerShell v7.5.5-Windows11 tarafında varsayılan versiyon 5.1 ilaveten güncel 7.5.4 var bende)/i]
Resim


SORU :

GNU/Linux Mint 22.2 x64 altında çalışan bu betik Windows11-10'da çalışır mı?


CEVAP :

Windows PowerShell, shebang [#!/usr/bin/env pwsh] satırını kullanmaz.

1.Shebang Windows'ta zararsızdır (düz metin). Betik yine pwsh ile çalışır; çalıştırma komutu :

Kod: Tümünü seç

pwsh .\ping_v2.0.ps1
2.Eğer ExecutionPolicy engellerse tek seferlik atlamak için :

Kod: Tümünü seç

pwsh -ExecutionPolicy Bypass -File .\ping_v2.0.ps1
3.İsterseniz shebang'ı kaldırıp temizlemek için dosyayı açın bir metin editörü ile, ilk satırını silin ve kayıt edin ; betik içeriği aynı kalır.

4.Alternatif (PowerShell 5.1):

Kod: Tümünü seç

powershell -File .\ping_v2.0.ps1
(çalışır ama pwsh tercih edin.Neden varsayılan sürüme göre geniş özelliklerle geliyor ve Windows12'de sürüm 7.x-8.x varsayılan olacak....).
Cevapla

“Programlama ve Script dilleri” sayfasına dön