Мне нужно реализовать ping в моем приложении Python, чтобы получить RTT для определенных хостов. Для этого есть несколько подходов:
Чтобы использовать один из пакетов PyPI (например, pyping, ping, multiping, scapy и т. Д.). Но все эти пакеты создают необработанный сокет для работы с пакетами ICMP. Это неприемлемо для меня.
Для создания необработанного сокета самостоятельно. Это не приемлемо, потому что причина выше. Я также попытался создать сокет ICMP следующим образом:
socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_ICMP)
Он не работает на моей машине.
Чтобы запустить утилиту ping
через подпроцесс. Но он работает относительно медленно и выглядит ужасно.
TCP Ping. Это неприемлемо в моем проекте.
Можете ли вы предложить мне другой способ реализации ping без прав root и использования утилиты ping
в разных процессах? Может быть, существует какой-то другой способ , как получить RTT для определенного хоста ?
Python2.7, Ubuntu16