Как реализовать ping без полномочий root и без подпроцесса в Python? - PullRequest
1 голос
/ 30 сентября 2019

Мне нужно реализовать ping в моем приложении Python, чтобы получить RTT для определенных хостов. Для этого есть несколько подходов:

  1. Чтобы использовать один из пакетов PyPI (например, pyping, ping, multiping, scapy и т. Д.). Но все эти пакеты создают необработанный сокет для работы с пакетами ICMP. Это неприемлемо для меня.

  2. Для создания необработанного сокета самостоятельно. Это не приемлемо, потому что причина выше. Я также попытался создать сокет ICMP следующим образом: socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_ICMP) Он не работает на моей машине.

  3. Чтобы запустить утилиту ping через подпроцесс. Но он работает относительно медленно и выглядит ужасно.

  4. TCP Ping. Это неприемлемо в моем проекте.

Можете ли вы предложить мне другой способ реализации ping без прав root и использования утилиты ping в разных процессах? Может быть, существует какой-то другой способ , как получить RTT для определенного хоста ?

Python2.7, Ubuntu16

...