Komento useiden IP-osoitteiden pingaamiseen samalla kertaa

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.

Komento useiden IP-osoitteiden pingaamiseen samalla kertaa - 1

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:

Komento useiden IP-osoitteiden pingaamiseen samalla kertaa - 2

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.

Komento useiden IP-osoitteiden pingaamiseen samalla kertaa - 3

Esimerkkitaulukko: Eri komentojen vertailu

MenetelmäKomentoesimerkkiHuomioita
Windows CMD FORFOR /L %i IN (1,1,254) DO ping -n 1 192.168.0.%iPeräkkäinen, hidas, vaatii suodatusta
Windows CMD + FINDFOR /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 fpingfping -g 192.168.0.0/24Rinnakkainen, nopea, asennettava erikseen
PowerShell JobsStart-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 useiden IP-osoitteiden pingaamiseen samalla kertaa - 4

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:

Komento useiden IP-osoitteiden pingaamiseen samalla kertaa - 5

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

ping komentokehote verkko vianmääritys Windows
Huomautus Sisältö on tarkoitettu yleiseksi ohjeeksi eikä takaa verkon toimivuutta kaikissa ympäristöissä.
Kirjoittaja

Stefano Barcellos

Avustaja sivustolla Visite Barbados.

« Edellinen julkaisu
Näin poistat järjestelmänvalvojan oikeudet Google Meetissä

Liittyvät julkaisut