Menu

19 mei 2011

Een ping-sweep uitvoeren onder OS X Terminal

Als netwerk- of systeembeheerder is het soms wel eens handig om te weten welke IP adressen er in je netwerk actief zijn. Door een apparaat in het netwerk te pingen op het IP adres kun je controleren of deze online is in het netwerk.

Helaas is het met het ping commando niet mogelijk om meerdere IP adressen of een complete IP range te pingen (een zogenaamde ping-sweep). Met behulp van het for commando in combinatie met ping is dit wel mogelijk. Je kan hiervoor het onderstaande commando gebruiken:

for i in {1..254}; do ping -c 1 -W 1 netwerk.$i | grep 'from'; done

Met behulp van het for gaan we alle IP adressen eindigend op 1 t/m 254 pingen. Vervang netwerk door het netwerk id en eindig met een ‘.’, het netwerk ID zal worden aangevuld met de waarde uit for (i). Met behulp van het grep commando laten alleen de IP adressen zien die reargeren op het ping commando.

Voorbeeld:We willen alle IP adressen pingen in het classe C netwerk 10.0.0.0/24, in dat geval gebruiken we het volgende commando.

for i in {1..254}; do ping -c 1 -W 1 10.0.0.$i | grep 'from'; done

Dit genereert een soort gelijke output als deze:

In het bovenstaande resultaat zijn er binnen het 10.0.0.0/24 netwerk 3 IP adressen actief namelijk 10.0.0.101, 10.0.0.111 en 10.0.0.112.

Wanneer je de ping-sweep voortijdig wilt afbreken dan is dat mogelijk met behulp van de toetscombinate ctrl + z.




Gerelateerde tips:




Reacties


  • Magnus Trouw 19 mei 2011 om 9:34

    Grappig klein shell scriptje. Het ligt zo voor de hand maar nooit over na gedacht om het in 1 regel te stoppen. Voor het betere werk kun natuurlijk nog verder gaan met bijv. nmap (OSX binary)

  • Nils Breunese 19 mei 2011 om 9:38

    Ik hou wel gestoei via de command line, maar start in dit geval toch liever even IP Scanner (van de maker van het eveneens geweldige DropCopy) op: http://10base-t.com/software/macintosh/ipscanner.html

  • Basjes 19 mei 2011 om 9:44

    Zelf ben ik ook een terminal liefhebber, maar vind deze info te summier. Ik gebruik Fing hiervoor. http://www.over-look.com/

  • Marcel Kraan 19 mei 2011 om 9:58

    Keep it to the source… bash rules

  • Hexley 19 mei 2011 om 10:44

    Dit zou ook moeten voldoen en het is een stuk makkelijker te onthouden “ping -c 2 10.0.0.255” … :)

  • Kor 19 mei 2011 om 11:53

    Het script vind mijn router op 192.168.1.254 niet. Als ik dit IP-adres gewoon Ping, dan krijg ik wel een reactie.

  • dyn 19 mei 2011 om 13:42

    @Kor: dit is ook een heel simplistische manier van pingen. Je pingt gewoon binnen een bepaalde range welgeteld maar 1x naar een adres. Als er dan niet binnen die tijd wordt gereageerd levert dat een fail op. Je kunt natuurlijk opgeven dat ie langer dan 1x moet pingen. Er zijn echter ook zat tools die standaard dit soort zaken al kunnen doen en tools die een stuk verder gaan (denk aan nmap) maar de bottom line hier is (denk ik) dat je met ping standaard al heel veel dingen kunt en je dus niet altijd naar die andere tools hoeft te grijpen (doe maar eens man ping, je hebt wat meer mogelijkheden wanneer je gaat sweepen).

  • Harold 20 mei 2011 om 15:04

    D’r is ook zoiets als nmap… dit is onderdeel van de development tools van OSX.

    Een krachtige CLI tool die je in sommige gevallen alleen als administrator mag draaien.

    Kijk hier (http://nmap.org/bennieston-tutorial/) voor meer info.

Een reactie toevoegen: