Giriş: Birden Fazla Cihaza Aynı Anda Ping Atma İhtiyacı
Ağ yöneticileri ve sistem uzmanları için bir ağdaki cihazların erişilebilirliğini kontrol etmek rutin bir işlemdir. Standart ping komutu tek bir hedef IP adresine veya alan adına ICMP Echo Request paketleri gönderir ve yanıt alır. Ancak bir alt ağdaki tüm adresleri, belirli bir IP aralığını veya birden çok sunucuyu taramanız gerektiğinde bu yöntem zaman alıcıdır. Windows Komut İstemi (cmd) üzerinde aynı anda birden fazla ping atmanın birkaç pratik yolu vardır. Bu makalede, FOR döngüsü kullanarak IP aralıklarını taramaktan, çıktıyı filtrelemeye ve Linux/Unix sistemlerde fping gibi araçlara kadar çeşitli teknikleri adım adım inceleyeceğiz. Ayrıca PowerShell’in iş parçacığı tabanlı yaklaşımıyla daha hızlı sonuç almayı da ele alacağız.
Ping Nedir ve Neden Birden Fazla Hedefe Ping Atarız?
Ping, bir ağ üzerindeki bir cihazın çevrimiçi olup olmadığını, yanıt süresini ve paket kaybını test eden temel bir ağ tanılama aracıdır. Genellikle tek bir IP adresi için kullanılır. Ancak aşağıdaki durumlarda birden fazla adrese aynı anda ping atmak gerekebilir:
- Bir alt ağdaki tüm kullanılabilir cihazları (örneğin 192.168.1.1-254 aralığını) hızlıca taramak.
- Bir sunucu kümesinin veya uzak ofislerin bağlantı durumunu periyodik olarak kontrol etmek.
- Yeni bir VLAN veya alt ağ yapılandırması sonrası tüm adreslerin yanıt verdiğini doğrulamak.
- Toplu sorun giderme senaryolarında ağ topolojisini anlamak.
Bu tür görevler için her bir adrese ayrı ayrı ping komutu yazmak verimsizdir. İşte bu noktada Komut İstemi ve diğer araçlar devreye girer.

Standart Ping Komutunun Sınırlamaları
Windows’daki standart ping komutu yalnızca tek bir hedefi kabul eder. Örneğin ping 192.168.1.10 ve ping google.com gibi. Komuta birden fazla IP veya alan adı verilemez. Ayrıca, bir IP aralığını taramak için her adrese sırayla ping atmak zorunda kalırsınız. Bu manuel işlem büyük ağlarda saatler sürebilir. Neyse ki, Windows Komut İstemi’nin güçlü bir kabuk özelliği olan FOR döngüsü sayesinde bu işlemi tek bir komut satırına indirgeyebiliriz. Aşağıdaki bölümde bu yöntemi detaylıca açıklayacağız.
FOR Döngüsü ile Aynı Anda Birden Fazla Ping Atma
Windows Komut İstemi’nde bir IP aralığına ping atmak için FOR /L döngüsü kullanılır. Bu döngü, bir başlangıç değerinden bitiş değerine kadar adım adım ilerler ve her adımda bir ping komutu çalıştırır. Örnek olarak, 192.168.1.1’den 192.168.1.254’e kadar tüm adresleri test etmek istediğimizi varsayalım. Komut yapısı şu şekildedir:
FOR /L %i IN (1,1,254) DO ping -n 1 192.168.1.%i

Burada %i döngü değişkenidir. (1,1,254) ifadesi 1’den başla, 1’er artır ve 254’e kadar devam et anlamına gelir. Her döngüde ping -n 1 komutu ile tek bir ICMP paketi gönderilir. Bu yöntem tüm adresleri teker teker tarar ancak yine de sıralı çalıştığı için toplam süre 254 x yanıt süresi kadar olur. Daha hızlı sonuç almak için -w (wait) parametresi ile zaman aşımını düşürebilir veya PowerShell gibi eşzamanlı çalıştırabilen araçlara yönelebilirsiniz.
FOR döngüsünün çıktısı karışık olacağından, yalnızca başarılı yanıtları görmek için FIND komutuyla birleştirmek faydalıdır. Bunu bir sonraki başlıkta ele alacağız. Aşağıdaki tabloda farklı işletim sistemlerinde çoklu ping yöntemlerini karşılaştırıyoruz.
| Yöntem | İşletim Sistemi | Örnek Komut | Avantaj | Dezavantaj |
|---|---|---|---|---|
| FOR döngüsü + ping | Windows | FOR /L %i IN (1,1,254) DO ping -n 1 192.168.1.%i |
Kurulum gerektirmez, basit. | Sıralı çalışır, yavaştır; çıktı filtrelenmezse karmaşık olur. |
| FOR döngüsü + find | Windows | FOR /L %i IN (1,1,254) DO ping -n 1 192.168.1.%i | find "Reply" |
Sadece başarılı yanıtları gösterir. | Yine sıralı çalışır. |
| fping | Linux, macOS | fping -g 192.168.1.0/24 |
Eşzamanlı ping atar, çok hızlıdır. | Windows’ta varsayılan değil, kurulum gerektirir. |
| PowerShell Jobs | Windows | 1..254 | % { Start-Job { ping -n 1 192.168.1.$_ } } |
Gerçek eşzamanlı çalışma, hızlıdır. | Karmaşık betik yazımı, kaynak kullanımı yüksek olabilir. |
Tablo, hangi yöntemi ne zaman kullanacağınız konusunda size fikir verebilir. Şimdi FOR döngüsü çıktısını nasıl daha okunabilir hale getireceğimize bakalım.

FIND Komutu ile Sonuçları Filtreleme
FOR döngüsü çalıştırıldığında ekranda hem başarılı yanıtlar (“Reply from …”) hem de zaman aşımı mesajları (“Request timed out”) görünür. Bu kalabalık çıktı içinde canlı cihazları bulmak zorlaşır. Bunu düzeltmek için FIND komutunu kullanarak yalnızca “Reply” anahtar sözcüğünü içeren satırları gösterebiliriz. Komut şu şekildedir:
FOR /L %i IN (1,1,254) DO ping -n 1 192.168.1.%i | FIND /i "Reply"
/i parametresi büyük/küçük harf duyarlılığını ortadan kaldırır. Bu komut sayesinde sadece yanıt alan IP adresleri listelenir. Çıktıyı bir metin dosyasına yönlendirmek için satır sonuna > sonuclar.txt ekleyebilirsiniz. Örneğin: FOR /L %i IN (1,1,254) DO ping -n 1 192.168.1.%i | FIND /i "Reply" > canli_cihazlar.txt Bu yöntem, bir alt ağ taraması yapmak için pratik bir yoldur. Ancak arka arkaya ping atıldığı için ağ üzerinde hafif bir yük oluşur ve tarama süresi ağ büyüklüğüne göre değişir. Daha hızlı bir çözüm arıyorsanız, Linux dünyasındaki fping aracını inceleyelim.

Linux’ta fping ile Eşzamanlı Ping Atma
Linux ve macOS sistemlerinde, aynı anda birden fazla IP adresine ping atmanın en etkili yollarından biri fping aracıdır. fping, ICMP paketlerini eşzamanlı olarak gönderir ve yanıtları beklerken diğer adresleri taramaya devam eder. Bu sayede 254 adreslik bir alt ağı saniyeler içinde tarayabilirsiniz. Kurulum genellikle paket yöneticisi ile yapılır: sudo apt install fping veya brew install fping. Kullanımı basittir:
fping -g 192.168.1.0/24
Bu komut, 192.168.1.0 ağındaki tüm adreslere (broadcast ve network adresleri dahil) ping atar. Sadece canlı adresleri görmek için -a (alive) parametresini kullanabilirsiniz: fping -ag 192.168.1.0/24. Ayrıca bir metin dosyasındaki IP listesini de tarayabilirsiniz: fping -f liste.txt. fping’in bu hızı, ağ yöneticileri için vazgeçilmez bir araç haline getirmiştir. Windows’ta da çeşitli üçüncü parti portları bulunur ancak varsayılan olarak gelmez. Windows kullanıcıları, PowerShell İşleri ile benzer bir hıza ulaşabilir.

PowerShell ile Gerçek Eşzamanlı Ping Atma
Windows’da daha gelişmiş bir çözüm arıyorsanız, PowerShell’in Start-Job özelliği ile her bir ping komutunu ayrı bir iş parçacığında çalıştırabilirsiniz. Bu sayede tüm pingleme işlemi neredeyse aynı anda başlar ve sonuçlar toplanır. Örnek bir betik:
1..254 | ForEach-Object { Start-Job -ScriptBlock { ping -n 1 192.168.1.$_ } }
Yukarıdaki komut, 1’den 254’e kadar her adres için bir iş başlatır. Tüm işlerin tamamlanmasını beklemek ve sonuçları almak için Get-Job | Wait-Job | Receive-Job komutları kullanılır. Bu yöntem, FOR döngüsünden çok daha hızlıdır ancak bilgisayarınızın kaynaklarını daha fazla kullanır. Sürekli ping yapmak için (belirli aralıklarla) ise aşağıdaki gibi bir yapı kullanabilirsiniz:
1..10 | ForEach-Object { Start-Job -ScriptBlock { while ($true) { ping -n 1 "10.0.0.$_" >> "$_ sonuc.txt"; Start-Sleep -Seconds 5 } } }
Bu betik, her bir IP için sürekli olarak ping atar ve sonuçları ayrı dosyalara kaydeder. PowerShell konusunda yeniyseniz, basit FOR döngüsüyle başlamanızı öneririz.
Pratik Kullanım Senaryoları ve Dikkat Edilmesi Gerekenler
Birden fazla IP’ye ping atma ihtiyacı en çok ağ keşfi, sorun giderme ve izleme senaryolarında ortaya çıkar. Bir ağda kaç cihazın açık olduğunu hızlıca öğrenmek için FOR döngüsü yeterli olsa da, canlı bir üretim ağında çok sayıda ping paketi göndermek ağ trafiğini artırabilir. Bu nedenle -n 1 (tek paket) kullanmak ve zaman aşımı değerini düşürmek iyi bir uygulamadır. Ayrıca, güvenlik duvarı ayarları ICMP yanıtlarını engelliyorsa ping sonuçları yanıltıcı olabilir. Bu durumda alternatif port tarama araçları (nmap gibi) düşünülmelidir. Linux’ta fping kullanırken root yetkisi gerekebilir; çünkü ham soket oluşturmak için ayrıcalık istenir. PowerShell İşleri ise bellek tüketimi açıs




