我使用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。关键在于,它会监听网络流量,并记录网络数据包,而不管生成流量的应用程序如何。您甚至不必在运行服务器的同一台计算机上运行它,而只需在同一子网中运行即可。
您还可以使用易于配置的GUI工具(例如wirehark)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句