Python通过查询字符串发送bash命令输出

时间:2014-08-05 21:19:04

标签: python bash http stdin ibeacon

我是Python的初学者,所以请耐心等待。我需要我的python程序接受来自命令的传入数据(stdin)(ibeacon scan -b)并通过查询字符串将该数据发送到我的服务器。我在覆盆子pi上使用Raspbian。 ibeacon_scan命令输出如下所示。

iBeacon Scan ...
3F234454-CFD-4A0FF-ADF2-F4911BA9FFA6 1 4 -71 -69
3F234454-CFD-4A0FF-ADF2-F4911BA9FFA6 6 2 -71 -63
3F234454-CFD-4A0FF-ADF2-F4911BA9FFA6 1 4 -71 -69
3F234454-CFD-4A0FF-ADF2-F4911BA9FFA6 5 7 -71 -64
...keeps updating

我正在将命令写入python脚本。

ibeacon scan -b > python.py &

以下是我认为可行的概要。我需要帮助正确组织代码。

import httplib, urllib, fileinput

for line in fileinput():
   params = urllib.urlencode({'@UUID': 12524, '@Major': 1, '@Minor': 2, '@Power': -71, '@RSSI': -66})
   headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
   conn = httplib.HTTPConnection("www.example.com")
   conn.request("POST", "", params, headers)
   response = conn.getresponse()
   print response.status, response.reason
   data = response.read()
   data
   conn.close()

我知道这有很多问题,我可以真正使用任何建议。谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

您的代码中存在多个问题。

<强> 1。错误的bash命令: 目前您正在将输出扩展到python.py文件,这是完全错误的。您应该使用管道并执行python.py脚本。您的命令应如下所示:

ibeacon scan -b | ./python.py &

使你的python.py脚本可执行(chown)。作为替代方案,您也可以尝试这样做:

ibeacon scan -b | python python.py &

<强> 2。错误使用fileintput:您的for循环应如下所示:

for line in fileinput.input():
    ...