Johdanto
Verkon vianmäärityksessä on usein tarpeen tarkistaa useiden IP-osoitteiden tai verkkolaitteiden saatavuus samanaikaisesti. Perinteinen ping-komento toimii vain yhdelle kohteelle kerrallaan, mikä hidastaa työskentelyä laajoissa verkoissa. Windowsin komentorivi tarjoaa kuitenkin keinoja pingata kokonainen IP-osoitealue yhdellä käskyllä. Tässä artikkelissa käymme läpi komentorivin tehokkaita menetelmiä, kuten FOR-silmukan, tulosten suodatuksen, sekä vaihtoehtoisia työkaluja Linux- ja PowerShell-ympäristöissä.
Windowsin komentorivi: FOR-silmukka
Windowsin komentorivillä (cmd) yleisin tapa pingata useita osoitteita on käyttää FOR-silmukkaa, joka toistaa ping-komennon halutulla IP-osoitealueella. FOR-silmukan syntaksi on seuraava:
FOR /L %i IN (1,1,254) DO ping -n 1 192.168.0.%i
Tämä komento pingaa osoitteet 192.168.0.1 - 192.168.0.254 yksi kerrallaan. Parametri /L tarkoittaa lukualuetta, ja arvot (1,1,254) määrittävät alkuarvon, askeleen ja loppuarvon. Muuttuja %i saa jokaisella kierroksella uuden luvun. Jos kirjoitat komennon erätiedostoon (.bat tai .cmd), on käytettävä kahta prosenttimerkkiä: %%i. Ping-komennon -n 1 lähettää vain yhden kyselyn, mikä nopeuttaa prosessia.

Komennon etuna on, että se toimii ilman erillisiä asennuksia ja on helppo muistaa. Haitaksi muodostuu kuitenkin hitaus, koska pinging tapahtuu peräkkäin: koko 254 osoitteen kierto saattaa kestää useita minuutteja. Lisäksi tuloste on täynnä sekä onnistuneita että epäonnistuneita viestejä, joten oleellisen tiedon löytäminen vaatii erillistä suodatusta.
Tulosten suodattaminen ja tallentaminen
Selkeyttääksesi tuloksia voit yhdistää FOR-silmukan FIND-komentoon, joka seuloo vain halutut rivit. Esimerkiksi komennolla
FOR /L %i IN (1,1,254) DO ping -n 1 192.168.0.%i | FIND /i "Reply"
saat näkyviin ainoastaan ne rivit, joissa esiintyy sana "Reply". Tämä vastaa onnistunutta ping-vastausta. Voit ohjata tulosteen tiedostoon lisäämällä merkin > komennon loppuun:

FOR /L %i IN (1,1,254) DO ping -n 1 192.168.0.%i | FIND /i "Reply" > tulokset.txt
Tiedostoon tallentuu vain vastaavat IP-osoitteet, mikä helpottaa verkon kartoittamista. SuperUser-sivustolla käsitellään tarkemmin tätä tekniikkaa ja sen muunnelmia.
Lista eri käyttöjärjestelmien menetelmistä
Seuraava lista esittelee yleisimpiä tapoja pingata useita osoitteita eri alustoilla:
- Windows CMD (FOR-silmukka): FOR /L %i IN (1,1,254) DO ping -n 1 192.168.0.%i
- Windows CMD (FIND-suodatus): FOR /L %i IN (1,1,254) DO ping -n 1 192.168.0.%i | FIND /i "Reply"
- Linux/Unix (fping): fping -g 192.168.0.0/24
- PowerShell (Start-Job): 1..254 | ForEach-Object { Start-Job -ScriptBlock { ping 192.168.0.$using: } } | Receive-Job
- PowerShell (Test-Connection): Test-Connection -ComputerName (1..254 | ForEach-Object { "192.168.0.$_" }) -Count 1 -AsJob
Jokaisella menetelmällä on omat vahvuutensa. FOR-silmukka on yksinkertainen ja valmiina Windowsissa, mutta hidas. fping on erittäin nopea, koska se lähettää kyselyt samanaikaisesti. PowerShell tarjoaa sekä rinnakkaisuutta että joustavuutta.

Esimerkkitaulukko: Eri komentojen vertailu
| Menetelmä | Komentoesimerkki | Huomioita |
|---|---|---|
| Windows CMD FOR | FOR /L %i IN (1,1,254) DO ping -n 1 192.168.0.%i | Peräkkäinen, hidas, vaatii suodatusta |
| Windows CMD + FIND | FOR /L %i IN (1,1,254) DO ping -n 1 192.168.0.%i | FIND /i "Reply" | Näyttää vain vastaukset, voidaan tallentaa tiedostoon |
| Linux fping | fping -g 192.168.0.0/24 | Rinnakkainen, nopea, asennettava erikseen |
| PowerShell Jobs | Start-Job -ScriptBlock { ping 192.168.0.1 } | Rinnakkainen, monimutkaisempi syntaksi |
Taulukosta näkee, että fping ja PowerShell ovat tehokkaita, kun halutaan nopeuttaa pingausta, mutta ne vaativat hieman enemmän osaamista tai erillisiä työkaluja.
Linux ja Unix: fping-työkalu
Unixin kaltaisissa käyttöjärjestelmissä, kuten Linux ja macOS, perinteinen ping-komento ei sisällä valmista silmukkaa. Sen sijaan voidaan käyttää avoimen lähdekoodin fping-työkalua, joka on suunniteltu nopeaan joukkopinguksen. fping pystyy pingaamaan useita kohteita samanaikaisesti ja tulostamaan tulokset tiiviisti. Asennus onnistuu paketinhallinnalla, esimerkiksi Ubuntu/Debianissa komennolla sudo apt install fping.
Yksinkertainen komento koko aliverkon testaamiseksi on:
fping -g 192.168.0.0/24

Komento lähettää yhden ICMP-kyselyn jokaiseen osoitteeseen ja näyttää, mitkä vastaavat (elossa) ja mitkä eivät. fping tukee myös useiden osoitteiden listaamista suoraan:
fping 192.168.0.1 192.168.0.2 192.168.0.10
welrbragan blogissa käsitellään fpingin eri ominaisuuksia, kuten aikakatkaisun ja toistomäärien asetuksia. fping on erityisen hyödyllinen suurissa verkoissa, joissa ping-vasteaikoja halutaan mitata nopeasti.
PowerShellin rinnakkais pingaus
PowerShell tarjoaa edistyksellisempiä keinoja suorittaa useita ping-komentoja samanaikaisesti. Yksi tapa on käyttää Start-Job-komentoa, joka luo taustatehtävän jokaiselle pingattavalle osoitteelle. Esimerkki:

1..254 | ForEach-Object { Start-Job -ScriptBlock { param($ip) ping -n 1 $ip } -ArgumentList "192.168.0.$_" } | Receive-Job -Wait
Tämä komento luo 254 taustatehtävää, jotka suorittavat pingin rinnakkain. Receive-Job -Wait odottaa, että kaikki tehtävät valmistuvat ja tulostaa niiden tulokset. Tulosten käsittely on kuitenkin sekavaa, koska jokainen tehtävä tulostaa omat rivinsä. Parempi tapa on käyttää PowerShellin sisäänrakennettua Test-Connection-komentoa:
Test-Connection -ComputerName (1..254 | ForEach-Object { "192.168.0.$_" }) -Count 1 -AsJob
Tämä lähettää yhden ping-kyselyn jokaiselle osoitteelle rinnakkain ja palauttaa tulokset objekteina, joita voidaan suodattaa helposti. PowerShell-menetelmät ovat tehokkaita, mutta vaativat PowerShellin perusosaamista. Redditin PowerShell-yhteisössä on jaettu lisää esimerkkejä jatkuvasta pingauksesta useisiin osoitteisiin (katso lähteet).
Yhteenveto
Useiden IP-osoitteiden pingaaminen samalla kertaa onnistuu monella tavalla. Windowsin komentorivin FOR-silmukka on aloittelijaystävällinen ja vaatii vain cmd-ikkunan. Yhdistämällä se FIND-komentoon saat siistit tulokset. Linux-käyttäjille fping on nopea ja joustava vaihtoehto, joka voidaan asentaa paketinhallinnasta. PowerShell soveltuu erityisesti niille, jotka haluavat hallita rinnakkaisuutta ja käsitellä tuloksia ohjelmallisesti. Valitse menetelmä tarpeesi ja käyttöjärjestelmäsi mukaan. Mu





