伙计们,我正在监视来自我的某个互联网设备的流量。我已经将Raspberry Pi设置为桥梁。当我运行这个脚本时(保存并设置为可执行文件" spy")
sudo tcpdump -A -n -p -l -i eth0 -s0 -w - tcp dst port 80 | stdbuf -oL strings -n10
我在终端屏幕上看到了感兴趣的记录:
id=11824&mt=a&length=A0580&density=A018600000&battery=normal&watts=4
id=04382&mt=b&length=A0970&density=A005111112&battery=normal&watts=4"
id=02606&mt=c&length=A0770&density=A005800000&battery=normal&watts=4'
id=02174&mt=d8&length=A0990&density=A005222224&battery=normal&watts=4+
id=11824&mt=a&length=A0580&density=A018600000&battery=normal&watts=4/
我创建了这个简单的Python程序来显示数据。
#!/usr/bin/env python
import sys
# test data
#f = open('/mnt/usbdrive/output/data.txt', 'r')
i=0
try:
# for line in f:
for line in sys.stdin:
i=i+1
print "\ninput line is \n--", line, "--\n"
except KeyboardInterrupt:
print('Done', i)
# f.close()
如果我将这些记录剪切并过去到文件中并打开该文件进行阅读(注释行),它可以正常工作。但是,如果我尝试将脚本输出传递给我的Python程序,它只是设置在那里。
spy | python /mnt/usbdrive/pgms/TestPipe.py
当我在几分钟后分解脚本时,它说它已处理了许多记录/数据包,但Python输出表示没有读取任何行,即输出为零。
Raspberry Pi正在运行Raspian OS(Debian wheezy,我猜)。
我做错了什么?..... RDK
答案 0 :(得分:0)
伙计......我找到答案,替换
for line in sys.stdin:
与
while 1:
line = sys.stdin.readline()
现在工作得很完美。不知道为什么我的原始代码不起作用,但.... RDK