Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I loop through an IP address range in python

Tags:

python

How can I loop through an IP address range in python? Lets say I want to loop through every IP from 192.168.1.1 to 192.168. How can this be done?

like image 461
Michael Avatar asked Nov 13 '12 20:11

Michael


2 Answers

from netaddr import *
ip = IPNetwork('192.0.2.16/29')
>>> ip_list = list(ip)
>>> len(ip_list)
8
>>> ip_list
[IPAddress('192.0.2.16'), IPAddress('192.0.2.17'), ..., IPAddress('192.0.2.22'), IPAddress('192.0.2.23')]
like image 160
Petr Šimek Avatar answered Sep 22 '22 16:09

Petr Šimek


If you want to loop through a network you can define a network using ipaddress module. Such as ipaddress.IPv4Network('192.168.1.0/24')

import ipaddress
for ip in ipaddress.IPv4Network('192.168.1.0/24'):
    print(ip)

This will produce a result like this:

192.168.1.0
192.168.1.1
192.168.1.2
192.168.1.3
...
192.168.1.255

But if you want to iterate through a range of ip's, you might need to convert between ip and integer.

>>> int(ipaddress.IPv4Address('10.0.0.1'))
167772161

So:

start_ip = ipaddress.IPv4Address('10.0.0.1')
end_ip = ipaddress.IPv4Address('10.0.0.5')
for ip_int in range(int(start_ip), int(end_ip)):
    print(ipaddress.IPv4Address(ip_int))

will produce a result like:

10.0.0.1
10.0.0.2
10.0.0.3
10.0.0.4
like image 21
Günhan Oral Avatar answered Sep 21 '22 16:09

Günhan Oral