在我的Django项目,我需要能够检查局域网上的主机是否可达使用ICMP的ping.我发现这个SO问题解决了如何在Python中ping某些东西以及这个SO问题链接到解释如何使用sodoers文件的资源.
一个Device模型存储在LAN上的主机的IP地址,并添加了新的后Device(通过自定义视图,而不是管理员)我设想检查,看看设备响应于使用AJAX调用的一个ping实例数据库公开该功能的API.
但是(从第一个SO问题中建议的库的文档字符串开始)"请注意,ICMP消息只能从以root身份运行的进程发送."
我不想以root用户身份运行Django,因为这是不好的做法.但是,此过程的一部分(发送和ICMP ping)需要以root身份运行.如果使用Django视图我希望发送一个ping数据包来测试主机的活跃性,那么Django本身需要以root身份运行,因为那是调用ping的进程.
这些是我能想到的解决方案,我的问题是有没有更好的方法只能以root身份执行Django项目的选择部分,除了这些:
我想要像"Django以root身份运行"库这样的东西,这可能吗?