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

How to check transporting some data to the port?

我使用 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()得到多行字符串,我想超时。

你能告诉我更好的做法吗?

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

您还可以使用 GUI 工具,例如 wireshark,它更易于配置。