无法从python脚本输出中读取值

时间:2017-01-13 14:34:15

标签: python ssh

我有2个raspberrypi设备。首先是测量温度,第二个是显示温度。我写了一些python脚本来管理发送温度结果。

服务器脚本:

import RPi.GPIO as GPIO
import dht11
import time
import datetime
import sys
# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()

# read data using pin 17
instance = dht11.DHT11(pin=17)

result = instance.read()

out = str(result.temperature) + " " + str(result.humidity)

sys.stdout.write(out)
sys.stdout.flush()
sys.exit(0)

客户端脚本

#!/usr/bin/python
import math
import time
import os
import Adafruit_CharLCD as LCD
# Initialize the LCD using the pins 
lcd = LCD.Adafruit_CharLCDPlate()

lcd.set_color(1.0, 1.0, 1.0)
lcd.clear()
ws_dht11 = ""
while True:
        ws_dht11 = str(os.system('ssh pi@weatherstation.local \'python ~/Apps/DHT11_Python/dht11_ssh_read.py\''))
        if ws_dht11<>'0 0':
                break;
print 'F'
print ws_dht11

问题在于ws_dht11变量。它似乎没有收到任何值,而不是这个服务器脚本是打印结果。我该如何修理?

2 个答案:

答案 0 :(得分:0)

os.system返回您运行的进程的退出代码,在这种情况下将返回0(我假设ssh甚至将返回代码传回,但不一定是这种情况)。我认为你要找的是os.popen(),它执行命令并允许你将其输出读到stdout。
这是一个非常肤浅的答案,我怀疑这是一种非常奇怪的实现沟通的方式,但我只是回答你的具体问题而没有思考。

答案 1 :(得分:0)

您只是运行一个进程,然后返回所述进程退出代码。

更好的解决方案是使用侦听套接字在主机之间进行通信,或使用某种HTTP API(如REST或XML)从主机A和主机B获取值。