【问题标题】:Piping data to a Python Program on Raspberry Pi / Rasbian OS在 Raspberry Pi / Raspbian OS 上将数据传输到 Python 程序
【发布时间】:2015-03-16 07:34:32
【问题描述】:

伙计们,我正在监视来自我的一台互联网设备的流量。我已将 Raspberry Pi 设置为桥接器。当我运行这个脚本时(保存并设置为可执行的“间谍”)

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 操作系统(我猜是 Debian wheezy)。

我做错了什么?.....RDK

【问题讨论】:

    标签: pipe raspberry-pi


    【解决方案1】:

    伙计们....我找到了答案,替换

     for line in sys.stdin:
    

    与

    while 1:
      line = sys.stdin.readline()
    

    现在完美运行。不知道为什么我的原始代码不起作用,但是....RDK

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-13
      • 2020-10-10
      • 2017-03-28
      相关资源
      最近更新 更多