Django и корневые процессы

В моем проекте Django мне нужно иметь возможность проверить, работает ли хост в локальной сети , используя пинг ICMP. Я нашел этот вопрос SO , который отвечает, как пинговать что-то в Python и этот вопрос SO , который ссылается на ресурсы, объясняющие, как использовать файл sodoers.

Настройка

A Модель устройства сохраняет IP-адрес для хоста в локальной сети, и после добавления нового экземпляра устройства в базу данных (через настраиваемый вид не администратор). Я предполагаю проверить, отвечает ли устройство на пинг, используя вызов AJAX к API, который раскрывает эту возможность.

Проблема

Однако (из строки документации библиотеки, предложенной в первом SO вопрос) «Обратите внимание, что сообщения ICMP могут быть отправлены только процессами, запущенными с правами root»

Я не хочу запускать Django от имени пользователя root, так как это плохая практика. Однако эта часть процесса (отправка и проверка связи ICMP) должна выполняться от имени пользователя root. Если с представлением Django я хочу отправить пакет ping для проверки работоспособности хоста, тогда сам Django должен быть запущен от имени пользователя root, поскольку это процесс, который будет вызывать ping.

Решения

Эти какие решения я могу придумать, и мой вопрос в том, есть ли лучшие способы выполнять только отдельные части проекта Django с правами root , кроме этих:

  1. Запускать Django от имени root (пожалуйста, нет!)
  2. Поместите "ping" запрос »в очереди, которую другие процессы - запущенные от имени root - могут периодически проверять и выполнять. Может быть, что-то вроде сельдерея .

Нет более простого способа?

Я хочу что-то вроде библиотеки «Django run as root», возможно ли это?

5
задан Community 23 May 2017 в 12:16
поделиться