Оптимизация запросов (ping) через telnet на python

Конечная цель - заполнить arp-таблицу на каком либо устройстве (коммутатор). Для этого подключаюсь по телнет и использую запросы ping до каждого ip в подсети коммутатора. Для "качественного" ping-запроса как я заметил, нужно подождать около 5 секунд до следующего запроса, иначе по каким-то причинам устройство не всегда успевает записать в arp-таблицу ip-адрес который мы пингуем. В следствии чего время на 1 устройство занимает около 22 минут (255ip * 5сек). Устройств много и тратить огромное количество времени на запросы это не разумно. Можно ли как-то уменьшить время исполнения данного скрипта? Смотрел в сторону асинхронности, многопоточности и многопроцессорности. Тяжело понять все это, да и что подойдет для данного случая лучше так и не разобрался.

import telnetlib
import time
import ipaddress


host = ''
login = ''
password = ''

ip2 = host.split('.')
ip3 = ip2[0] + '.' + ip2[1] + '.' + ip2[2] + '.0/24'
ip0 = ip2[0] + '.' + ip2[1] + '.' + ip2[2] + '.0'
subnet1 = ipaddress.ip_network(ip3)

telnet = telnetlib.Telnet(host)
time.sleep(0.1)
telnet.write(b'\n')
telnet.write(login.encode('ascii') + b'\n')
telnet.write(password.encode('ascii') + b'\n')

for ip in subnet1:
    if str(ip) != str(ip0):
        command = 'ping ' + str(ip)
        telnet.write(command.encode('ascii') + b'\n')
        print(ip)
        time.sleep(5)

time.sleep(0.2)
telnet.close()

Ответы (0 шт):