ping sweep

ping-sweep.py

#!/usr/bin/python

import ipaddress
import os


#ip address string must be in unicode to use ipaddress module
network = ipaddress.ip_network(unicode("10.11.1.0/24"))

print("Running Python ping sweep of target IP range 10.11.1.0/24")

for i in network.hosts():
	#str(i)
	
	response = os.system("ping %s -c 1 > /dev/null" %i)
	
        if response == 0:
                print("%s UP" %i)
        else:
                print("%s No response" %i)

print("Ping sweep complete")

powersweep.py

multi-threaded

#!/usr/bin/python

import multiprocessing
import subprocess
import os

def pinger( job_q, results_q ):
    DEVNULL = open(os.devnull,'w')
    while True:
        ip = job_q.get()
        if ip is None: break

        try:
            subprocess.check_call(['ping','-c1',ip],
                                  stdout=DEVNULL)
            results_q.put(ip)
        except:
            pass

if __name__ == '__main__':
    pool_size = 255

    jobs = multiprocessing.Queue()
    results = multiprocessing.Queue()

    pool = [ multiprocessing.Process(target=pinger, args=(jobs,results))
             for i in range(pool_size) ]

    for p in pool:
        p.start()

    for i in range(1,255):
        jobs.put('10.11.1.{0}'.format(i))

    for p in pool:
        jobs.put(None)

    for p in pool:
        p.join()

    os.system("touch results.txt")

    while not results.empty():
        ip = results.get()
        print(ip)

pingsweep.sh

#!/bin/bash

echo "Running Bash loop to perform a ping sweep of target IP range 10.11.1.0/24"

IP=10.11.1.

for x in `seq 1 254`; do
ping -c 1 $IP$x | grep "64 bytes" | cut -d " " -f 4 | cut -d ":" -f 1
done

echo "Ping sweep complete"

Last updated