如何检查将一些数据传输到端口?

时间:2015-03-28 08:39:26

标签: python django tcpdump

我使用Django 1.6和Python 2.7

这是我的tcpdump命令。

sudo /usr/sbin/tcpdump -n -X port 3331

我从python中执行命令,因为我想在Django中使用它。

import subprocess as sub

def tcpdump(request, port):    
    result = 'nothing'

    count = 0
    proc = sub.Popen(['sudo', 'tcpdump', '-n', '-X', 'port', str(port)], stdout=sub.PIPE)    

    try:
        for row in proc.stdout:
            print row.rstrip()   # process here
            result = str(row.rstrip())
            count += 1
            if count > 10:
                break
    except:
        print 'tcpdump error'
        proc.terminate()

    return HttpResponse(result)

我在views.py写道。

urls.py

url(r'^tcpdump(?P<port>\d+)/$', tcpdump),

我只会访问http://some.url/tcpdump3331

这个row.rstrip()得到多行字符串,我想暂停。

你能告诉我更好的练习吗?

1 个答案:

答案 0 :(得分:0)

您无需从应用中运行tcpdump。关键是它会嗅探网络流量,并记录网络数据包,而不管生成流量的应用程序如何。您甚至不必在运行服务器的同一台计算机上运行它,只需在同一子网上运行。

您还可以使用更易于配置的诸如wireshark之​​类的GUI工具。