Я пытаюсь написать scapy script, который может сделать среднее время ping, поэтому мне нужно получить время, прошедшее между отправленным и отправленным пакетом ICMP echo/reply и полученным ответным пакетом. На данный момент у меня есть следующее:
#! /usr/bin/env python
from scapy.all import *
from time import *
def QoS_ping(host, count=3):
packet = Ether()/IP(dst=host)/ICMP()
t=0.0
for x in range(count):
t1=time()
ans=srp(packet,iface="eth0", verbose=0)
t2=time()
t+=t2-t1
return (t/count)*1000
Проблема заключается в том, что использование функции time() не приводит к хорошему результату. Например, я нахожу 134 мс на одном домене и с помощью функции системы ping в том же домене, я нашел 30 мс (в среднем, конечно).
Мой вопрос: есть ли способ получить точное время, отправленное между отправленным пакетом и принятым пакетом scapy? Я не хочу использовать функцию popen() или другой системный вызов, потому что мне нужно scapy для управления пакетами futur.