我使用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()
得到多行字符串,我想暂停。
你能告诉我更好的练习吗?
答案 0 :(得分:0)
您无需从应用中运行tcpdump。关键是它会嗅探网络流量,并记录网络数据包,而不管生成流量的应用程序如何。您甚至不必在运行服务器的同一台计算机上运行它,只需在同一子网上运行。
您还可以使用更易于配置的诸如wireshark之类的GUI工具。