shell和脚本

时间:2017-12-27 03:33:49

标签: bash shell ubuntu tcp netcat

我正在尝试在脚本中运行一组命令。确切地说,这些行是

rm tmp_pipe
mkfifo tmp_pipe
python listen_pipe.py &
while [ true ]; do nc -l -w30 7036 >>tmp_pipe; done &

listen_pipe.py只是

if __name__ == "__main__":
    f = open("tmp_pipe")

    vals = " "

    while "END" not in vals:
        vals = f.readline()
        if len(vals) > 0:
            print(vals)
        else:
            f = open("tmp_pipe")

如果按照显示的顺序运行命令,我会获得所需的输出,这是与ESP设备的连接,用于传输运动数据。如果ESP设备离开网络范围或设备已关闭,则连接将在30秒后重置。 python脚本继续从管道读取,并且在重置tcp连接时不会终止。但是,如果我在脚本文件中运行此代码,则nc无法连接,并且设备将无限期地保持在未连接状态。该脚本只是

#!/bin/bash
rm tmp_pipe
mkfifo tmp_pipe
python listen_pipe.py &
while [ true ]; do nc -l -w30 7036 >>tmp_pipe; done &

这是在Ubuntu 16.04上运行的。任何建议都非常受欢迎,我一直在与这个代码作斗争。谢谢,

伊恩

0 个答案:

没有答案