我已经安装了iftop,它现在在命令行上运行良好,当我尝试将它集成到Django中时,它根本没有给我任何输出,但同时我没有收到错误。
views.py
def packets(request, template="linux_path/packets.html"):
context = {}
tcp_data = subprocess.Popen(['sudo', 'iftop','-i', 'eth1'], stdout=subprocess.PIPE)
raw_packets = tcp_data.stdout.read()
groups = []
for raw_packet in raw_packets.split("\n"):
tokens = re.match("[5:5]", raw_packet)
if tokens is None:
continue
else:
packet_name, packet_length = tokens.groups()
group = {
"packet_name":packet_name,
"packet_length":packet_length
}
groups.append(groups)
return groups{% extends "base.html" %}
{% block title %}
Packet Log
{% endblock %}
{% block content %}
<table style="width: 100%">
<thead>
<th>Name</th>
</thead>
<tbody>
<tr>
<td>{{function call here}}</td>
</tr>
</tbody>
</table>
{% endblock %}我还在urls.py文件中输入了正确的代码
所发生的情况是,该页只是在加载时挂起,而不进入我的packets.html页面。
知道我做错了什么吗?
一旦我做到这一点,那么我将能够操纵数据的格式,我想使用RE。
当出现该选项时,我甚至将sudo密码输入命令行,但页面仍然挂起。
发布于 2015-03-03 11:57:33
iftop使用ncurses,这意味着您不会使用STDOUT捕获它。查看帮助,您可以提供以下选项:
-t text output mode
Use text interface without ncurses and print the output to STDOUT.所以,尝试传递这个论点,它可能会解决你的问题。
但是这里有一个问题,您的web服务器不应该被允许使用sudo。这是个严重的安全问题。您可以考虑制作一个非常简单的Django应用程序,它只运行这个命令,不处理任何其他数据来减少攻击面。
https://stackoverflow.com/questions/28831144
复制相似问题