gpt4 book ai didi

python - 如何在 Django 中显示 Iftop

转载 作者:太空宇宙 更新时间:2023-11-04 10:55:48 24 4
gpt4 key购买 nike

我已经安装了 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

HTML

{% 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 密码,但页面仍然挂起。

最佳答案

iftop 使用 ncurses,这意味着您不会使用 STDOUT 捕获它。看着 help ,您可以提供此选项:

-t text output mode
Use text interface without ncurses and print the output to STDOUT.

所以尝试传递这个参数,它可能会解决你的问题。

这里有一个问题,你的网络服务器不应该被允许sudo。这是一个严重的安全问题。您可以考虑制作一个非常简单的 Django 应用程序,它只运行此命令而不处理任何其他数据以减少攻击面。

关于python - 如何在 Django 中显示 Iftop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28831144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com