Перебор ip адресов в диапазоне
Есть диапазон ip адресов задаваемый в виде 192.168.0.1-192.168.0.3, и надо его пропинговать. У меня есть идея в таком виде: начиная с крайнего правого октета начинать перебор и отсылать запросы. Я реализую это так:
def ping(ip_p_1,ip_p_2):
if (int(ip_p_1[3]) < int(ip_p_2[3])):
for i in range(int(ip_p_1[3]),int(ip_p_2[3])+1):
ip_p_1[3] = str(i)
request(ip_p_1)
Но это будет работать в том случае, если последний октет конечного ip больше начального, а если диапазон задан в виде 192.168.0.3-192.168.0.1?
И еще одна проблема, как в таком случае реализовать перебор, если, например, второй октет с конца конечного адреса больше,например : 192.168.0.1-192.168.3.1? Подскажите направление в реализации данного алгоритма или, если есть подобные решения, ссылки на них.