首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Django内部显示Iftop

如何在Django内部显示Iftop
EN

Stack Overflow用户
提问于 2015-03-03 11:52:44
回答 1查看 215关注 0票数 0

我已经安装了iftop,它现在在命令行上运行良好,当我尝试将它集成到Django中时,它根本没有给我任何输出,但同时我没有收到错误。

views.py

代码语言:javascript
复制
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

代码语言:javascript
复制
{% 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密码输入命令行,但页面仍然挂起。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-03 11:57:33

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

代码语言:javascript
复制
-t text output mode
       Use text interface without ncurses and print the output to STDOUT.

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28831144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档