如何检查传输一些数据到端口?
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,它更易于配置。
我使用 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,它更易于配置。