Mar*_*row 5 python django ping root django-views
在我的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身份运行"库这样的东西,这可能吗?
绝对没办法,不要以root身份运行Django代码!
我会以root身份运行守护进程(用Python编写,为什么不运行),然后在Django实例和守护进程之间运行IPC.只要您确定验证内容并正确处理它(例如使用subprocess.call数组等)并且只传入数据(而不是执行命令),它应该没问题.
这是一个使用web.py的示例客户端和服务器
服务器:http://gist.github.com/788639 客户端:http://gist.github.com/788658
您需要安装webpy.org但无论如何它都值得拥有.如果您可以将IP(或主机名)硬连接到服务器并删除参数,那就更好了.
| 归档时间: |
|
| 查看次数: |
2501 次 |
| 最近记录: |