Трудно реализовать функциональность ping / latency на непривилегированном хост-компьютере с Python - PullRequest
0 голосов
/ 26 ноября 2018

Я сделал веб-приложение (python / django), которое пингует разные серверы и возвращает значения ping.вот ссылка .

Имеет функцию pingserver (ip, sev), которая использует os / system fping (может использоваться с / bin / ping) для получения выходных данных и полосы для получения значения.

def pingserver(ip,sev):
    ping_response = subprocess.Popen(["/usr/bin/fping","-c1","-t400",ip], stdout=subprocess.PIPE).stdout.read()
    latency = str(ping_response)
    ping_value=latency.split('ms')[0].split(',')[-1]
    if len(ping_value) <= 3:
        return(sev,'unknown')
    else:
        return(sev,ping_value)

он отлично работает на моем локальном сервере, но код на хост-машине не работает, потому что / bin / fping не завершается.Я не могу сделать следующее:

  1. установить fping или ping (у меня нет прав root на сервере)

  2. не может использовать pyping (нужен rootдля создания необработанного сокета)

  3. не может использовать исполняемые файлы ping / fping (требуется разрешение root)

  4. не может использовать http.connnection.запрос или аналогичный (мне нужно точное значение ping; не информация о сервере вверх или вниз)

Поэтому мой вопрос заключается в том, как я могу получить ping / latency в этих условиях, чтобы мой код функционировал.(любые предложения, связанные с перепиской кода или использованием библиотеки приветствуются)

1 Ответ

0 голосов
/ 26 ноября 2018

Похоже, с ping связаны потенциальные проблемы с безопасностью, поэтому PythonAnywhere не позволит вам запустить его.Но вы можете открыть что-то вроде

time nc -zw400 <host> <port>

(используя оболочку bash для команды time), чтобы получить статистику задержки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...